本篇文章給大家談?wù)勲娫挋C(jī)器人java源碼,以及電話機(jī)器人java源碼是多少對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。
本文目錄一覽:
1、學(xué)java好還是python好?哪個(gè)有前途?
2、GitHub上面有哪些經(jīng)典的java框架源碼
3、靈堂出現(xiàn)三條黑蛇什么意思
4、如何學(xué)好JAVA?
5、求java編寫(xiě)的簡(jiǎn)單協(xié)同文本編輯器源碼~~~急!
6、Java語(yǔ)言好學(xué)么?
學(xué)java好還是python好?哪個(gè)有前途?
以下僅代表個(gè)人觀點(diǎn)~分析了一波
Java作為長(zhǎng)期的編程語(yǔ)言霸主之一,其應(yīng)用涵蓋后臺(tái)服務(wù)端、大數(shù)據(jù)、桌面應(yīng)用等多個(gè)領(lǐng)域,主要領(lǐng)域當(dāng)然是后臺(tái)服務(wù)端,大部分企業(yè)對(duì)后臺(tái)語(yǔ)言的首選還是Java,尤其是大型項(xiàng)目,Java相較于PHP,Python等語(yǔ)言的優(yōu)勢(shì)還是很明顯的。所以,你只要掌握得好,別說(shuō)現(xiàn)在Java依然如日中天,就算哪天Java真的輝煌不在了,也頂多不會(huì)那么火爆,是不至于讓你不好找工作的。
首先當(dāng)前國(guó)內(nèi)行業(yè)高工資的前幾位金融、互聯(lián)網(wǎng)。而java就是互聯(lián)網(wǎng)的其中一個(gè)方向領(lǐng)域?;貧w到大背景前提,互聯(lián)網(wǎng)還會(huì)一直火下去,相應(yīng)的招聘崗位會(huì)持續(xù)下去,互聯(lián)網(wǎng)+、物聯(lián)網(wǎng)等都是大量需要java人才的方向。其次,我們每天都可以看到各種智能AI的出現(xiàn)、導(dǎo)致各種行業(yè)的需求量大減,比如銀行柜員,電話客服,工廠工人等,以后的時(shí)代是逐漸機(jī)器替代人類(lèi)的過(guò)程。而java的學(xué)習(xí)一定是大量需要的,可以通過(guò)java再進(jìn)階到大數(shù)據(jù)、AI等其他更深層次的領(lǐng)域。但是同時(shí)人才的競(jìng)爭(zhēng),大量的人往互聯(lián)網(wǎng)行業(yè)邁入,那競(jìng)爭(zhēng)的壓力一定會(huì)很大,供大于求,所以假如你要進(jìn)入該行業(yè),你要清晰定位自己是否有這方面的硬實(shí)力,是否做好準(zhǔn)備。
java可以做太多東西了。目前所有的互聯(lián)網(wǎng)服務(wù)端都是采用互聯(lián)網(wǎng)的架構(gòu)級(jí)應(yīng)用,在互聯(lián)網(wǎng)的架構(gòu)級(jí)應(yīng)用中,基本都是用java做解決方案;服務(wù)端不僅服務(wù)的是傳統(tǒng)的互聯(lián)網(wǎng)應(yīng)用,移動(dòng)互聯(lián)網(wǎng)和物聯(lián)網(wǎng)市場(chǎng)的智能設(shè)備也都離不開(kāi)服務(wù)端,都需要通過(guò)服務(wù)器進(jìn)行數(shù)據(jù)的傳輸,且服務(wù)端絕大多數(shù)都是由java進(jìn)行開(kāi)發(fā);移動(dòng)互聯(lián)網(wǎng)增長(zhǎng),物聯(lián)網(wǎng)增長(zhǎng)及傳統(tǒng)互聯(lián)網(wǎng)增長(zhǎng),都帶來(lái)大量的java服務(wù)器的增長(zhǎng)。所以java的招聘需求在持續(xù)攀升;能夠?qū)崙?zhàn)最重要。
綜上,從Java的招聘量、平均薪資、發(fā)展空間、就業(yè)方向四個(gè)方面來(lái)看,目前Java還是比較有前途的行業(yè)。
如果你未來(lái)要立志成為一個(gè)專(zhuān)業(yè)的程序員,建議先學(xué)習(xí)Java(或者C#也行,兩者有很多原理上很像,實(shí)在不行,C/C++也可以),Java是程序員公認(rèn)的專(zhuān)屬語(yǔ)言。
話都說(shuō)到這里了,那就簡(jiǎn)單給大家推薦一波Java快速自學(xué)找工作的資料吧(包括路線、教程、項(xiàng)目以及書(shū)籍資料):
Java入門(mén)學(xué)習(xí)路線:
Java基礎(chǔ)教程:
Java300集零基礎(chǔ)適合初學(xué)者視頻教程_Java初學(xué)入門(mén)視頻基礎(chǔ)鞏固教程
Java實(shí)戰(zhàn)項(xiàng)目+源碼:
史上最全java項(xiàng)目實(shí)戰(zhàn)課程(含項(xiàng)目實(shí)戰(zhàn)+源碼)
書(shū)籍資料推薦:
學(xué)習(xí)java用什么入門(mén)書(shū)?
希望這個(gè)回答對(duì)你有幫助!需要資料的話可以留言~
GitHub上面有哪些經(jīng)典的java框架源碼
Bazel電話機(jī)器人java源碼:來(lái)自Google的構(gòu)建工具電話機(jī)器人java源碼,可以快速、可靠地構(gòu)建代碼。官網(wǎng)
Gradle:使用Groovy(非XML)進(jìn)行增量構(gòu)建電話機(jī)器人java源碼,可以很好地與Maven依賴(lài)管理配合工作。官網(wǎng)
Buck:Facebook構(gòu)建工具。官網(wǎng)
字節(jié)碼操作
編程方式操作字節(jié)碼的開(kāi)發(fā)庫(kù)。
ASM:通用底層字節(jié)碼操作和分析開(kāi)發(fā)庫(kù)。官網(wǎng)
Byte Buddy:使用流式API進(jìn)一步簡(jiǎn)化字節(jié)碼生成。官網(wǎng)
Byteman:在運(yùn)行時(shí)通過(guò)DSL(規(guī)則)操作字節(jié)碼進(jìn)行測(cè)試和故障排除。官網(wǎng)
Javassist:一個(gè)簡(jiǎn)化字節(jié)碼編輯嘗試。官網(wǎng)
集群管理
在集群內(nèi)動(dòng)態(tài)管理應(yīng)用程序的框架。
Apache Aurora:Apache Aurora是一個(gè)Mesos框架,用于長(zhǎng)時(shí)間運(yùn)行服務(wù)和定時(shí)任務(wù)(cron job)。官網(wǎng)
Singularity:Singularity是一個(gè)Mesos框架,方便部署和操作。它支持Web Service、后臺(tái)運(yùn)行、調(diào)度作業(yè)和一次性任務(wù)。官網(wǎng)
代碼分析
測(cè)量代碼指標(biāo)和質(zhì)量工具。
Checkstyle:代碼編寫(xiě)規(guī)范和標(biāo)準(zhǔn)靜態(tài)分析工具。官網(wǎng)
Error Prone:將常見(jiàn)編程錯(cuò)誤作為運(yùn)行時(shí)錯(cuò)誤報(bào)告。官網(wǎng)
FindBugs:通過(guò)字節(jié)碼靜態(tài)分析查找隱藏bug。官網(wǎng)
jQAssistant:使用基于Neo4J查詢語(yǔ)言進(jìn)行代碼靜態(tài)分析。官網(wǎng)
PMD:對(duì)源代碼分析查找不良的編程習(xí)慣。官網(wǎng)
SonarQube:通過(guò)插件集成其它分析組件,對(duì)過(guò)去一段時(shí)間內(nèi)的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。官網(wǎng)
編譯器生成工具
用來(lái)創(chuàng)建解析器、解釋器或編譯器的框架。
ANTLR:復(fù)雜的全功能自頂向下解析框架。官網(wǎng)
JavaCC:JavaCC是更加專(zhuān)門(mén)的輕量級(jí)工具,易于上手且支持語(yǔ)法超前預(yù)測(cè)。官網(wǎng)
外部配置工具
支持外部配置的開(kāi)發(fā)庫(kù)。
config:針對(duì)JVM語(yǔ)言的配置庫(kù)。官網(wǎng)
owner:減少冗余配置屬性。官網(wǎng)
約束滿足問(wèn)題求解程序
幫助解決約束滿足問(wèn)題的開(kāi)發(fā)庫(kù)。
Choco:可直接使用的約束滿足問(wèn)題求解程序,使用了約束規(guī)劃技術(shù)。官網(wǎng)
JaCoP:為FlatZinc語(yǔ)言提供了一個(gè)接口,可以執(zhí)行MiniZinc模型。官網(wǎng)
OptaPlanner:企業(yè)規(guī)劃與資源調(diào)度優(yōu)化求解程序。官網(wǎng)
Sat4J:邏輯代數(shù)與優(yōu)化問(wèn)題最先進(jìn)的求解程序。官網(wǎng)
持續(xù)集成
Bamboo:Atlassian解決方案,可以很好地集成Atlassian的其電話機(jī)器人java源碼他產(chǎn)品??梢赃x擇開(kāi)源許可,也可以購(gòu)買(mǎi)商業(yè)版。官網(wǎng)
CircleCI:提供托管服務(wù),可以免費(fèi)試用。官網(wǎng)
Codeship:提供托管服務(wù),提供有限的免費(fèi)模式。官網(wǎng)
fabric8:容器集成平臺(tái)。官網(wǎng)
Go:ThoughtWork開(kāi)源解決方案。官網(wǎng)
Jenkins:支持基于服務(wù)器的部署服務(wù)。官網(wǎng)
TeamCity:JetBrain的持續(xù)集成解決方案,有免費(fèi)版。官網(wǎng)
Travis:通常用作開(kāi)源項(xiàng)目的托管服務(wù)。官網(wǎng)
Buildkite: 持續(xù)集成工具,用簡(jiǎn)單的腳本就能設(shè)置pipeline,而且能快速構(gòu)建,可以免費(fèi)試用。官網(wǎng)
CSV解析
簡(jiǎn)化CSV數(shù)據(jù)讀寫(xiě)的框架與開(kāi)發(fā)庫(kù)
uniVocity-parsers:速度最快功能最全的CSV開(kāi)發(fā)庫(kù)之一,同時(shí)支持TSV與固定寬度記錄的讀寫(xiě)。官網(wǎng)
數(shù)據(jù)庫(kù)
簡(jiǎn)化數(shù)據(jù)庫(kù)交互的相關(guān)工具。
Apache Phoenix:HBase針對(duì)低延時(shí)應(yīng)用程序的高性能關(guān)系數(shù)據(jù)庫(kù)層。官網(wǎng)
Crate:實(shí)現(xiàn)了數(shù)據(jù)同步、分片、縮放、復(fù)制的分布式數(shù)據(jù)存儲(chǔ)。除此之外還可以使用基于SQL的語(yǔ)法跨集群查詢。官網(wǎng)
Flyway:簡(jiǎn)單的數(shù)據(jù)庫(kù)遷移工具。官網(wǎng)
H2:小型SQL數(shù)據(jù)庫(kù),以可以作為內(nèi)存數(shù)據(jù)庫(kù)使用著稱(chēng)。官網(wǎng)
HikariCP:高性能JDBC連接工具。官網(wǎng)
JDBI:便捷的JDBC抽象。官網(wǎng)
Protobuf:Google數(shù)據(jù)交換格式。官網(wǎng)
SBE:簡(jiǎn)單二進(jìn)制編碼,是最快速的消息格式之一。官網(wǎng)
Wire:整潔輕量級(jí)協(xié)議緩存。官網(wǎng)
幫實(shí)現(xiàn)依賴(lài)翻轉(zhuǎn)范式的開(kāi)發(fā)庫(kù)。官網(wǎng)
Apache DeltaSpike:CDI擴(kuò)展框架。官網(wǎng)
Dagger2:編譯時(shí)注入框架,不需要使用反射。官網(wǎng)
Guice:可以匹敵Dagger的輕量級(jí)注入框架。官網(wǎng)
HK2:輕量級(jí)動(dòng)態(tài)依賴(lài)注入框架。官網(wǎng)
開(kāi)發(fā)流程增強(qiáng)工具
從最基本的層面增強(qiáng)開(kāi)發(fā)流程。
ADT4J:針對(duì)代數(shù)數(shù)據(jù)類(lèi)型的JSR-269代碼生成器。官網(wǎng)
AspectJ:面向切面編程(AOP)的無(wú)縫擴(kuò)展。官網(wǎng)
Auto:源代碼生成器集合。官網(wǎng)
DCEVM:通過(guò)修改JVM在運(yùn)行時(shí)支持對(duì)已加載的類(lèi)進(jìn)行無(wú)限次重定義。官網(wǎng)
HotswapAgent:支持無(wú)限次重定義運(yùn)行時(shí)類(lèi)與資源。官網(wǎng)
Immutables:類(lèi)似Scala的條件類(lèi)。官網(wǎng)
JHipster:基于Spring Boot與AngularJS應(yīng)用程序的Yeoman源代碼生成器。官網(wǎng)
JRebel:無(wú)需重新部署,可以即時(shí)重新加載代碼與配置的商業(yè)軟件。官網(wǎng)
Lombok:減少冗余的代碼生成器。官網(wǎng)
Spring Loaded:類(lèi)重載代理。官網(wǎng)
vert.x:多語(yǔ)言事件驅(qū)動(dòng)應(yīng)用框架。官網(wǎng)
分布式應(yīng)用
用來(lái)編寫(xiě)分布式容錯(cuò)應(yīng)用的開(kāi)發(fā)庫(kù)和框架。
Akka:用來(lái)編寫(xiě)分布式容錯(cuò)并發(fā)事件驅(qū)動(dòng)應(yīng)用程序的工具和運(yùn)行時(shí)。官網(wǎng)
Apache Storm:實(shí)時(shí)計(jì)算系統(tǒng)。官網(wǎng)
Apache ZooKeeper:針對(duì)大型分布式系統(tǒng)的協(xié)調(diào)服務(wù),支持分布式配置、同步和名稱(chēng)注冊(cè)。官網(wǎng)
Hazelcast:高可擴(kuò)展內(nèi)存數(shù)據(jù)網(wǎng)格。官網(wǎng)
Hystrix:提供延遲和容錯(cuò)。官網(wǎng)
JGroups:提供可靠的消息傳遞和集群創(chuàng)建的工具。官網(wǎng)
Orbit:支持虛擬角色(Actor),在傳統(tǒng)角色的基礎(chǔ)上增加了另外一層抽象。官網(wǎng)
Quasar:為JVM提供輕量級(jí)線程和角色。官網(wǎng)
分布式數(shù)據(jù)庫(kù)
對(duì)應(yīng)用程序而言,在分布式系統(tǒng)中的數(shù)據(jù)庫(kù)看起來(lái)就像是只有一個(gè)數(shù)據(jù)源。
Apache Cassandra:列式數(shù)據(jù)庫(kù),可用性高且沒(méi)有單點(diǎn)故障。官網(wǎng)
Apache HBase:針對(duì)大數(shù)據(jù)的Hadoop數(shù)據(jù)庫(kù)。官網(wǎng)
Druid:實(shí)時(shí)和歷史OLAP數(shù)據(jù)存儲(chǔ),在聚集查詢和近似查詢方面表現(xiàn)不俗。官網(wǎng)
Infinispan:針對(duì)緩存的高并發(fā)鍵值對(duì)數(shù)據(jù)存儲(chǔ)。官網(wǎng)
發(fā)布
以本機(jī)格式發(fā)布應(yīng)用程序的工具。
Bintray:發(fā)布二進(jìn)制文件版本控制工具??梢杂贛aven或Gradle一起配合使用。提供開(kāi)源免費(fèi)版本和幾種商業(yè)收費(fèi)版本。官網(wǎng)
Central Repository:最大的二進(jìn)制組件倉(cāng)庫(kù),面向開(kāi)源社區(qū)提供免費(fèi)服務(wù)。Apache Maven默認(rèn)使用Central官網(wǎng)Repository,也可以在所有其他構(gòu)建工具中使用。
IzPack:為跨平臺(tái)部署建立創(chuàng)作工具(Authoring Tool)。官網(wǎng)
JitPack:打包GitHub倉(cāng)庫(kù)的便捷工具??筛鶕?jù)需要構(gòu)建Maven、Gradle項(xiàng)目,發(fā)布可立即使用的組件。官網(wǎng)
Launch4j:將JAR包裝為輕量級(jí)本機(jī)Windows可執(zhí)行程序。官網(wǎng)
Nexus:支持代理和緩存功能的二進(jìn)制管理工具。官網(wǎng)
packr:將JAR、資源和JVM打包成Windows、Linux和Mac OS X本地發(fā)布文件。官網(wǎng)
文檔處理工具
處理Office文檔的開(kāi)發(fā)庫(kù)。
Apache POI:支持OOXML規(guī)范(XLSX、DOCX、PPTX)以及OLE2規(guī)范(XLS、DOC、PPT)。官網(wǎng)
documents4j:使用第三方轉(zhuǎn)換器進(jìn)行文檔格式轉(zhuǎn)換,轉(zhuǎn)成類(lèi)似MS Word這樣的格式。官網(wǎng)
jOpenDocument:處理OpenDocument格式(由Sun公司提出基于XML的文檔格式)。官網(wǎng)
函數(shù)式編程
函數(shù)式編程支持庫(kù)。
Cyclops:支持一元(Monad)操作和流操作工具類(lèi)、comprehension(List語(yǔ)法)、模式匹配、trampoline等特性。官網(wǎng)
Fugue:Guava的函數(shù)式編程擴(kuò)展。官網(wǎng)
Functional Java:實(shí)現(xiàn)了多種基礎(chǔ)和高級(jí)編程抽象,用來(lái)輔助面向組合開(kāi)發(fā)(composition-oriented development)。官網(wǎng)
Javaslang:一個(gè)函數(shù)式組件庫(kù),提供持久化數(shù)據(jù)類(lèi)型和函數(shù)式控制結(jié)構(gòu)。官網(wǎng)
jOOλ:旨在填補(bǔ)Java 8 lambda差距的擴(kuò)展,提供了眾多缺失的類(lèi)型和一組豐富的順序流API。官網(wǎng)
游戲開(kāi)發(fā)
游戲開(kāi)發(fā)框架。
jMonkeyEngine:現(xiàn)代3D游戲開(kāi)發(fā)引擎。官網(wǎng)
libGDX:全面的跨平臺(tái)高級(jí)框架。官網(wǎng)
LWJGL:對(duì)OpenGL/CL/AL等技術(shù)進(jìn)行抽象的健壯框架。官網(wǎng)
GUI
現(xiàn)代圖形化用戶界面開(kāi)發(fā)庫(kù)。
JavaFX:Swing的后繼者。官網(wǎng)
Scene Builder:開(kāi)發(fā)JavaFX應(yīng)用的可視化布局工具。官網(wǎng)
高性能計(jì)算
涵蓋了從集合到特定開(kāi)發(fā)庫(kù)的高性能計(jì)算相關(guān)工具。
Agrona:高性能應(yīng)用中常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)和工具方法。官網(wǎng)
Disruptor:線程間消息傳遞開(kāi)發(fā)庫(kù)。官網(wǎng)
fastutil:快速緊湊的特定類(lèi)型集合(Collection)。官網(wǎng)
GS Collections:受Smalltalk啟發(fā)的集合框架。官網(wǎng)
HPPC:基礎(chǔ)類(lèi)型集合。官網(wǎng)
Javolution:實(shí)時(shí)和嵌入式系統(tǒng)的開(kāi)發(fā)庫(kù)。官網(wǎng)
JCTools:JDK中缺失的并發(fā)工具。官網(wǎng)
Koloboke:Hash set和hash map。官網(wǎng)
Trove:基礎(chǔ)類(lèi)型集合。官網(wǎng)
High-scale-bli:Cliff Click 個(gè)人開(kāi)發(fā)的高性能并發(fā)庫(kù)官網(wǎng)
IDE
簡(jiǎn)化開(kāi)發(fā)的集成開(kāi)發(fā)環(huán)境。
Eclipse:老牌開(kāi)源項(xiàng)目,支持多種插件和編程語(yǔ)言。官網(wǎng)
IntelliJ IDEA:支持眾多JVM語(yǔ)言,是安卓開(kāi)發(fā)者好的選擇。商業(yè)版主要針對(duì)企業(yè)客戶。官網(wǎng)
NetBeans:為多種技術(shù)提供集成化支持,包括Java SE、Java EE、數(shù)據(jù)庫(kù)訪問(wèn)、HTML5
Imgscalr:純Java 2D實(shí)現(xiàn),簡(jiǎn)單、高效、支持硬件加速的圖像縮放開(kāi)發(fā)庫(kù)。官網(wǎng)
Picasso:安卓圖片下載和圖片緩存開(kāi)發(fā)庫(kù)。官網(wǎng)
Thumbnailator:Thumbnailator是一個(gè)高質(zhì)量Java縮略圖開(kāi)發(fā)庫(kù)。官網(wǎng)
ZXing:支持多種格式的一維、二維條形碼圖片處理開(kāi)發(fā)庫(kù)。官網(wǎng)
im4java: 基于ImageMagick或GraphicsMagick命令行的圖片處理開(kāi)發(fā)庫(kù),基本上ImageMagick能夠支持的圖片格式和處理方式都能夠處理。官網(wǎng)
Apache Batik:在Java應(yīng)用中程序以SVG格式顯示、生成及處理圖像的工具集,包括SVG解析器、SVG生成器、SVG DOM等模塊,可以集成使用也可以單獨(dú)使用,還可以擴(kuò)展自定義的SVG標(biāo)簽。官網(wǎng)
JSON
簡(jiǎn)化JSON處理的開(kāi)發(fā)庫(kù)。
Genson:強(qiáng)大且易于使用的Java到JSON轉(zhuǎn)換開(kāi)發(fā)庫(kù)。官網(wǎng)
Gson:谷歌官方推出的JSON處理庫(kù),支持在對(duì)象與JSON之間雙向序列化,性能良好且可以實(shí)時(shí)調(diào)用。官網(wǎng)
Jackson:與GSON類(lèi)似,在頻繁使用時(shí)性能更佳。官網(wǎng)
LoganSquare:基于Jackson流式API,提供對(duì)JSON解析和序列化。比GSON與Jackson組合方式效果更好。官網(wǎng)
Fastjson:一個(gè)Java語(yǔ)言編寫(xiě)的高性能功能完善的JSON庫(kù)。官網(wǎng)
Kyro:快速、高效、自動(dòng)化的Java對(duì)象序列化和克隆庫(kù)。官網(wǎng)
JVM與JDK
目前的JVM和JDK實(shí)現(xiàn)。
JDK 9:JDK 9的早期訪問(wèn)版本。官網(wǎng)
OpenJDK:JDK開(kāi)源實(shí)現(xiàn)。官網(wǎng)
基于JVM的語(yǔ)言
除Java外,可以用來(lái)編寫(xiě)JVM應(yīng)用程序的編程語(yǔ)言。
Scala:融合了面向?qū)ο蠛秃瘮?shù)式編程思想的靜態(tài)類(lèi)型編程語(yǔ)言。官網(wǎng)
Groovy:類(lèi)型可選(Optionally typed)的動(dòng)態(tài)語(yǔ)言,支持靜態(tài)類(lèi)型和靜態(tài)編譯。目前是一個(gè)Apache孵化器項(xiàng)目。官網(wǎng)
Clojure:可看做現(xiàn)代版Lisp的動(dòng)態(tài)類(lèi)型語(yǔ)言。官網(wǎng)
Ceylon:RedHat開(kāi)發(fā)的面向?qū)ο箪o態(tài)類(lèi)型編程語(yǔ)言。官網(wǎng)
Kotlin:JetBrain針對(duì)JVM、安卓和瀏覽器提供的靜態(tài)類(lèi)型編程語(yǔ)言。官網(wǎng)
Xtend:一種靜態(tài)編程語(yǔ)言,能夠?qū)⑵浯a轉(zhuǎn)換為簡(jiǎn)潔高效的Java代碼,并基于JVM運(yùn)行。官網(wǎng)
日志
記錄應(yīng)用程序行為日志的開(kāi)發(fā)庫(kù)。
Apache Log4j 2:使用強(qiáng)大的插件和配置架構(gòu)進(jìn)行完全重寫(xiě)。官網(wǎng)
kibana:分析及可視化日志文件。官網(wǎng)
Logback:強(qiáng)健的日期開(kāi)發(fā)庫(kù),通過(guò)Groovy提供很多有趣的選項(xiàng)。官網(wǎng)
logstash:日志文件管理工具。官網(wǎng)
Metrics:通過(guò)JMX或HTTP發(fā)布參數(shù),并且支持存儲(chǔ)到數(shù)據(jù)庫(kù)。官網(wǎng)
SLF4J:日志抽象層,需要與具體的實(shí)現(xiàn)配合使用。官網(wǎng)
機(jī)器學(xué)習(xí)
提供具體統(tǒng)計(jì)算法的工具。其算法可從數(shù)據(jù)中學(xué)習(xí)。
Apache Flink:快速、可靠的大規(guī)模數(shù)據(jù)處理引擎。官網(wǎng)
Apache Hadoop:在商用硬件集群上用來(lái)進(jìn)行大規(guī)模數(shù)據(jù)存儲(chǔ)的開(kāi)源軟件框架。官網(wǎng)
Apache Mahout:專(zhuān)注協(xié)同過(guò)濾、聚類(lèi)和分類(lèi)的可擴(kuò)展算法。官網(wǎng)
Apache Spark:開(kāi)源數(shù)據(jù)分析集群計(jì)算框架。官網(wǎng)
DeepDive:從非結(jié)構(gòu)化數(shù)據(jù)建立結(jié)構(gòu)化信息并集成到已有數(shù)據(jù)庫(kù)的工具。官網(wǎng)
Deeplearning4j:分布式多線程深度學(xué)習(xí)開(kāi)發(fā)庫(kù)。官網(wǎng)
H2O:用作大數(shù)據(jù)統(tǒng)計(jì)的分析引擎。官網(wǎng)
Weka:用作數(shù)據(jù)挖掘的算法集合,包括從預(yù)處理到可視化的各個(gè)層次。官網(wǎng)
QuickML:高效機(jī)器學(xué)習(xí)庫(kù)。官網(wǎng)、GitHub
消息傳遞
在客戶端之間進(jìn)行消息傳遞,確保協(xié)議獨(dú)立性的工具。
Aeron:高效可擴(kuò)展的單播、多播消息傳遞工具。官網(wǎng)
Apache ActiveMQ:實(shí)現(xiàn)JMS的開(kāi)源消息代理(broker),可將同步通訊轉(zhuǎn)為異步通訊。官網(wǎng)
Apache Camel:通過(guò)企業(yè)級(jí)整合模式(Enterprise Integration Pattern EIP)將不同的消息傳輸API整合在一起。官網(wǎng)
Apache Kafka:高吞吐量分布式消息系統(tǒng)。官網(wǎng)
Hermes:快速、可靠的消息代理(Broker),基于Kafka構(gòu)建。官網(wǎng)
JBoss HornetQ:清晰、準(zhǔn)確、模塊化,可以方便嵌入的消息工具。官網(wǎng)
JeroMQ:ZeroMQ的純Java實(shí)現(xiàn)。官網(wǎng)
Smack:跨平臺(tái)XMPP客戶端函數(shù)庫(kù)。官網(wǎng)
Openfire:是開(kāi)源的、基于XMPP、采用Java編程語(yǔ)言開(kāi)發(fā)的實(shí)時(shí)協(xié)作服務(wù)器。 Openfire安裝和使用都非常簡(jiǎn)單,并可利用Web界面進(jìn)行管理。官網(wǎng)GitHub
Spark:是一個(gè)開(kāi)源,跨平臺(tái)IM客戶端。它的特性支持集組聊天,電話集成和強(qiáng)大安全性能。如果企業(yè)內(nèi)部部署IM使用Openfire+Spark是最佳的組合。官網(wǎng)GitHub
Tigase: 是一個(gè)輕量級(jí)的可伸縮的 Jabber/XMPP 服務(wù)器。無(wú)需其他第三方庫(kù)支持,可以處理非常高的復(fù)雜和大量的用戶數(shù),可以根據(jù)需要進(jìn)行水平擴(kuò)展。官網(wǎng)
雜項(xiàng)
未分類(lèi)其它資源。
Design Patterns:實(shí)現(xiàn)并解釋了最常見(jiàn)的設(shè)計(jì)模式。官網(wǎng)
Jimfs:內(nèi)存文件系統(tǒng)。官網(wǎng)
Lanterna:類(lèi)似curses的簡(jiǎn)單console文本GUI函數(shù)庫(kù)。官網(wǎng)
LightAdmin:可插入式CRUD UI函數(shù)庫(kù),可用來(lái)快速應(yīng)用開(kāi)發(fā)。官網(wǎng)
OpenRefine:用來(lái)處理混亂數(shù)據(jù)的工具,包括清理、轉(zhuǎn)換、使用Web Service進(jìn)行擴(kuò)展并將其關(guān)聯(lián)到數(shù)據(jù)庫(kù)。官網(wǎng)
RoboVM:Java編寫(xiě)原生iOS應(yīng)用。官網(wǎng)
Quartz:強(qiáng)大的任務(wù)調(diào)度庫(kù).官網(wǎng)
應(yīng)用監(jiān)控工具
監(jiān)控生產(chǎn)環(huán)境中應(yīng)用程序的工具。
AppDynamics:性能監(jiān)測(cè)商業(yè)工具。官網(wǎng)
JavaMelody:性能監(jiān)測(cè)和分析工具。官網(wǎng)
Kamon:Kamon用來(lái)監(jiān)測(cè)在JVM上運(yùn)行的應(yīng)用程序。官網(wǎng)
New Relic:性能監(jiān)測(cè)商業(yè)工具。官網(wǎng)
SPM:支持對(duì)JVM應(yīng)用程序進(jìn)行分布式事務(wù)追蹤的性能監(jiān)測(cè)商業(yè)工具。官網(wǎng)
Takipi:產(chǎn)品運(yùn)行時(shí)錯(cuò)誤監(jiān)測(cè)及調(diào)試商業(yè)工具。官網(wǎng)
原生開(kāi)發(fā)庫(kù)
用來(lái)進(jìn)行特定平臺(tái)開(kāi)發(fā)的原生開(kāi)發(fā)庫(kù)。
JNA:不使用JNI就可以使用原生開(kāi)發(fā)庫(kù)。此外,還為常見(jiàn)系統(tǒng)函數(shù)提供了接口。官網(wǎng)
自然語(yǔ)言處理
用來(lái)專(zhuān)門(mén)處理文本的函數(shù)庫(kù)。
Apache OpenNLP:處理類(lèi)似分詞等常見(jiàn)任務(wù)的工具。官網(wǎng)
CoreNLP:斯坦佛CoreNLP提供了一組基礎(chǔ)工具,可以處理類(lèi)似標(biāo)簽、實(shí)體名識(shí)別和情感分析這樣的任務(wù)。官網(wǎng)
LingPipe:一組可以處理各種任務(wù)的工具集,支持POS標(biāo)簽、情感分析等。官網(wǎng)
Mallet:統(tǒng)計(jì)學(xué)自然語(yǔ)言處理、文檔分類(lèi)、聚類(lèi)、主題建模等。官網(wǎng)
網(wǎng)絡(luò)
網(wǎng)絡(luò)編程函數(shù)庫(kù)。
Async Http Client:異步HTTP和WebSocket客戶端函數(shù)庫(kù)。官網(wǎng)
Grizzly:NIO框架,在Glassfish中作為網(wǎng)絡(luò)層使用。官網(wǎng)
Netty:構(gòu)建高性能網(wǎng)絡(luò)應(yīng)用程序開(kāi)發(fā)框架。官網(wǎng)
OkHttp:一個(gè)Android和Java應(yīng)用的HTTP+SPDY客戶端。官網(wǎng)
Undertow:基于NIO實(shí)現(xiàn)了阻塞和非阻塞API的Web服務(wù)器,在WildFly中作為網(wǎng)絡(luò)層使用。官網(wǎng)
ORM
處理對(duì)象持久化的API。
Ebean:支持快速數(shù)據(jù)訪問(wèn)和編碼的ORM框架。官網(wǎng)
EclipseLink:支持許多持久化標(biāo)準(zhǔn),JPA、JAXB、JCA和SDO。官網(wǎng)
Hibernate:廣泛使用、強(qiáng)健的持久化框架。Hibernate的技術(shù)社區(qū)非?;钴S。官網(wǎng)
MyBatis:帶有存儲(chǔ)過(guò)程或者SQL語(yǔ)句的耦合對(duì)象(Couples object)。官網(wǎng)
OrmLite:輕量級(jí)開(kāi)發(fā)包,免除了其它ORM產(chǎn)品中的復(fù)雜性和開(kāi)銷(xiāo)。官網(wǎng)
Nutz:另一個(gè)SSH。官網(wǎng),Github
JFinal:JAVA WEB + ORM框架。官網(wǎng),Github
PDF
用來(lái)幫助創(chuàng)建PDF文件的資源。
Apache FOP:從XSL-FO創(chuàng)建PDF。官網(wǎng)
Apache PDFBox:用來(lái)創(chuàng)建和操作PDF的工具集。官網(wǎng)
DynamicReports:JasperReports的精簡(jiǎn)版。官網(wǎng)
flyingsaucer:XML/XHTML和CSS 2.1渲染器。官網(wǎng)
iText:一個(gè)易于使用的PDF函數(shù)庫(kù),用來(lái)編程創(chuàng)建PDF文件。注意,用于商業(yè)用途時(shí)需要許可證。官網(wǎng)
JasperReports:一個(gè)復(fù)雜的報(bào)表引擎。官網(wǎng)
性能分析
性能分析、性能剖析及基準(zhǔn)測(cè)試工具。
jHiccup:提供平臺(tái)中JVM暫停的日志和記錄。官網(wǎng)
JMH:JVM基準(zhǔn)測(cè)試工具。官網(wǎng)
JProfiler:商業(yè)分析器。官網(wǎng)
LatencyUtils:測(cè)量和報(bào)告延遲的工具。官網(wǎng)
VisualVM:對(duì)運(yùn)行中的應(yīng)用程序信息提供了可視化界面。官網(wǎng)
YourKit Java Profiler:商業(yè)分析器。官網(wǎng)
響應(yīng)式開(kāi)發(fā)庫(kù)
用來(lái)開(kāi)發(fā)響應(yīng)式應(yīng)用程序的開(kāi)發(fā)庫(kù)。
Reactive Streams:異步流處理標(biāo)準(zhǔn),支持非阻塞式反向壓力(backpressure)。官網(wǎng)
Reactor:構(gòu)建響應(yīng)式快速數(shù)據(jù)(fast-data)應(yīng)用程序的開(kāi)發(fā)庫(kù)。官網(wǎng)
RxJava:通過(guò)JVM可觀察序列(observable sequence)構(gòu)建異步和基于事件的程序。官網(wǎng)
REST框架
用來(lái)創(chuàng)建RESTful 服務(wù)的框架。
Dropwizard:偏向于自己使用的Web框架。用來(lái)構(gòu)建Web應(yīng)用程序,使用了Jetty、Jackson、Jersey和Metrics。官網(wǎng)
Feign:受Retrofit、JAXRS-2.0和WebSocket啟發(fā)的HTTP客戶端連接器(binder)。官網(wǎng)
Jersey:JAX-RS參考實(shí)現(xiàn)。官網(wǎng)
RESTEasy:經(jīng)過(guò)JAX-RS規(guī)范完全認(rèn)證的可移植實(shí)現(xiàn)。官網(wǎng)
RestExpress:一個(gè)Java類(lèi)型安全的REST客戶端。官網(wǎng)
RestX:基于注解處理和編譯時(shí)源碼生成的框架。官網(wǎng)
Retrofit:類(lèi)型安全的REST客戶端。官網(wǎng)
Spark:受到Sinatra啟發(fā)的Java REST框架。官網(wǎng)
Swagger:Swagger是一個(gè)規(guī)范且完整的框架,提供描述、生產(chǎn)、消費(fèi)和可視化RESTful Web Service。官網(wǎng)
Blade:國(guó)人開(kāi)發(fā)的一個(gè)輕量級(jí)的MVC框架. 它擁有簡(jiǎn)潔的代碼,優(yōu)雅的設(shè)計(jì)。官網(wǎng)
科學(xué)計(jì)算與分析
用于科學(xué)計(jì)算和分析的函數(shù)庫(kù)。
DataMelt:用于科學(xué)計(jì)算、數(shù)據(jù)分析及數(shù)據(jù)可視化的開(kāi)發(fā)環(huán)境。官網(wǎng)
JGraphT:支持?jǐn)?shù)學(xué)圖論對(duì)象和算法的圖形庫(kù)。官網(wǎng)
JScience:用來(lái)進(jìn)行科學(xué)測(cè)量和單位的一組類(lèi)。官網(wǎng)
搜索引擎
文檔索引引擎,用于搜索和分析。
Apache Solr:一個(gè)完全的企業(yè)搜索引擎。為高吞吐量通信進(jìn)行了優(yōu)化。官網(wǎng)
Elasticsearch:一個(gè)分布式、支持多租戶(multitenant)全文本搜索引擎。提供了RESTful Web接口和無(wú)schema的JSON文檔。官網(wǎng)
Apache Lucene:是一個(gè)開(kāi)放源代碼的全文檢索引擎工具包,是一個(gè)全文檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎,部分文本分析引擎。官網(wǎng)
安全
用于處理安全、認(rèn)證、授權(quán)或會(huì)話管理的函數(shù)庫(kù)。
Apache Shiro:執(zhí)行認(rèn)證、授權(quán)、加密和會(huì)話管理。官網(wǎng)
Bouncy Castle,涵蓋了從基礎(chǔ)的幫助函數(shù)到PGP/SMIME操作。官網(wǎng):多途加密開(kāi)發(fā)庫(kù)。支持JCA提供者(JCA provider)
Cryptomator:在云上進(jìn)行客戶端跨平臺(tái)透明加密。官網(wǎng)
Keycloak:為瀏覽器應(yīng)用和RESTful Web Service集成SSO和IDM。目前還處于beta版本,但是看起來(lái)非常有前途。官網(wǎng)
PicketLink:PicketLink是一個(gè)針對(duì)Java應(yīng)用進(jìn)行安全和身份認(rèn)證管理的大型項(xiàng)目(Umbrella Project)。官網(wǎng)
序列化
用來(lái)高效處理序列化的函數(shù)庫(kù)。
FlatBuffers:高效利用內(nèi)存的序列化函數(shù)庫(kù),無(wú)需解包和解析即可高效訪問(wèn)序列化數(shù)據(jù)。官網(wǎng)
Kryo:快速、高效的對(duì)象圖形序列化框架。官網(wǎng)
FST:提供兼容JDK的高性能對(duì)象圖形序列化。官網(wǎng)
MessagePack:一種高效的二進(jìn)制序列化格式。官網(wǎng)
應(yīng)用服務(wù)器
用來(lái)部署應(yīng)用程序的服務(wù)器。
Apache Tomcat:針對(duì)Servlet和JSP的應(yīng)用服務(wù)器,健壯性好且適用性強(qiáng)。官網(wǎng)
Apache TomEE:Tomcat加Java EE。官網(wǎng)
Jetty:輕量級(jí)、小巧的應(yīng)用服務(wù)器,通常會(huì)嵌入到項(xiàng)目中。官網(wǎng)
WebSphere Liberty:輕量級(jí)、模塊化應(yīng)用服務(wù)器,由IBM開(kāi)發(fā)。官網(wǎng)
WildFly:之前被稱(chēng)作JBoss,由Red Hat開(kāi)發(fā)。支持很多Java EE功能。官網(wǎng)
模板引擎
在模板中替換表達(dá)式的工具。
Apache Velocity:提供HTML頁(yè)面模板、email模板和通用開(kāi)源代碼生成器模板。官網(wǎng)
FreeMarker:通用模板引擎,不需要任何重量級(jí)或自己使用的依賴(lài)關(guān)系。官網(wǎng)
Handlebars.java:使用Java編寫(xiě)的模板引擎,邏輯簡(jiǎn)單,支持語(yǔ)義擴(kuò)展(semantic Mustache)。官網(wǎng)
Thymeleaf:旨在替換JSP,支持XML文件的工具。官網(wǎng)
測(cè)試
測(cè)試內(nèi)容從對(duì)象到接口,涵蓋性能測(cè)試和基準(zhǔn)測(cè)試工具。
Apache JMeter:功能性測(cè)試和性能評(píng)測(cè)。官網(wǎng)
Arquillian:集成測(cè)試和功能行測(cè)試平臺(tái),集成Java EE容器。官網(wǎng)
AssertJ:支持流式斷言提高測(cè)試的可讀性。官網(wǎng)
Awaitility:用來(lái)同步異步操作的DSL。官網(wǎng)
Cucumber:BDD測(cè)試框架。官網(wǎng)
Gatling:設(shè)計(jì)為易于使用、可維護(hù)的和高性能負(fù)載測(cè)試工具。官網(wǎng)
Hamcrest:可用來(lái)靈活創(chuàng)建意圖(intent)表達(dá)式的匹配器。官網(wǎng)
JMockit:用來(lái)模擬靜態(tài)、final方法等。官網(wǎng)
JUnit:通用測(cè)試框架。官網(wǎng)
Mockito:在自動(dòng)化單元測(cè)試中創(chuàng)建測(cè)試對(duì)象,為T(mén)DD或BDD提供支持。官網(wǎng)
PowerMock: 支持模擬靜態(tài)方法、構(gòu)造函數(shù)、final類(lèi)和方法、私有方法以及移除靜態(tài)初始化器的模擬工具。官網(wǎng)
REST Assured:為REST/HTTP服務(wù)提供方便測(cè)試的Java DSL。官網(wǎng)
Selenide:為Selenium提供精準(zhǔn)的周邊API,用來(lái)編寫(xiě)穩(wěn)定且可讀的UI測(cè)試。官網(wǎng)
Selenium:為Web應(yīng)用程序提供可移植軟件測(cè)試框架。官網(wǎng)
Spock:JUnit-compatible framework featuring an expressive Groovy-derived specification language.官網(wǎng)兼容JUnit框架,支持衍生的Groovy范的語(yǔ)言。
TestNG:測(cè)試框架。官網(wǎng)
Truth:Google的斷言和命題(proposition)框架。官網(wǎng)
Unitils:模塊化測(cè)試函數(shù)庫(kù),支持單元測(cè)試和集成測(cè)試。官網(wǎng)
WireMock:Web Service測(cè)試樁(Stub)和模擬函數(shù)。官網(wǎng)
通用工具庫(kù)
通用工具類(lèi)函數(shù)庫(kù)。
Apache Commons:提供各種用途的函數(shù),比如配置、驗(yàn)證、集合、文件上傳或XML處理等。官網(wǎng)
args4j:命令行參數(shù)解析器。官網(wǎng)
CRaSH:為運(yùn)行進(jìn)行提供CLI。官網(wǎng)
Gephi:可視化跨平臺(tái)網(wǎng)絡(luò)圖形化操作程序。官網(wǎng)
Guava:集合、緩存、支持基本類(lèi)型、并發(fā)函數(shù)庫(kù)、通用注解、字符串處理、I/O等。官網(wǎng)
JADE:構(gòu)建、調(diào)試多租戶系統(tǒng)的框架和環(huán)境。官網(wǎng)
javatuples:正如名字表示的那樣,提供tuple支持。盡管目前tuple的概念還有留有爭(zhēng)議。官網(wǎng)
JCommander:命令行參數(shù)解析器。官網(wǎng)
Protégé:提供存在論(ontology)編輯器以及構(gòu)建知識(shí)系統(tǒng)的框架。官網(wǎng)
網(wǎng)絡(luò)爬蟲(chóng)
用于分析網(wǎng)站內(nèi)容的函數(shù)庫(kù)。
Apache Nutch:可用于生產(chǎn)環(huán)境的高度可擴(kuò)展、可伸縮的網(wǎng)絡(luò)爬蟲(chóng)。官網(wǎng)
Crawler4j:簡(jiǎn)單的輕量級(jí)網(wǎng)絡(luò)爬蟲(chóng)。官網(wǎng)
JSoup:刮取、解析、操作和清理HTML。官網(wǎng)
Web框架
用于處理Web應(yīng)用程序不同層次間通訊的框架。
Apache Tapestry:基于組件的框架,使用Java創(chuàng)建動(dòng)態(tài)、強(qiáng)健的、高度可擴(kuò)展的Web應(yīng)用程序。官網(wǎng)
Apache Wicket:基于組件的Web應(yīng)用框架,與Tapestry類(lèi)似帶有狀態(tài)顯示GUI。官網(wǎng)
Google Web Toolkit:一組Web開(kāi)發(fā)工具集,包含在客戶端將Java代碼轉(zhuǎn)為JavaScript的編譯器、XML解析器、RCP官網(wǎng)API、JUnit集成、國(guó)際化支持和GUI控件。
Grails:Groovy框架,旨在提供一個(gè)高效開(kāi)發(fā)環(huán)境,使用約定而非配置、沒(méi)有XML并支持混入(mixin)。官網(wǎng)
Ninja:Java全棧Web開(kāi)發(fā)框架。非常穩(wěn)固、快速和高效。官網(wǎng)
Pippo:小型、高度模塊化的類(lèi)Sinatra框架。官網(wǎng)
Play:使用約定而非配置,支持代碼熱加載并在瀏覽器中顯示錯(cuò)誤。官網(wǎng)
PrimeFaces:JSF框架,提供免費(fèi)和帶支持的商業(yè)版本。包括若干前端組件。官網(wǎng)
Ratpack:一組Java開(kāi)發(fā)函數(shù)庫(kù),用于構(gòu)建快速、高效、可擴(kuò)展且測(cè)試完備的HTTP應(yīng)用程序。官網(wǎng)
Spring Boot:微框架,簡(jiǎn)化了Spring新程序的開(kāi)發(fā)過(guò)程。官網(wǎng)
Spring:旨在簡(jiǎn)化Java EE的開(kāi)發(fā)過(guò)程,提供依賴(lài)注入相關(guān)組件并支持面向切面編程。官網(wǎng)
Vaadin:基于GWT構(gòu)建的事件驅(qū)動(dòng)框架。使用服務(wù)端架構(gòu),客戶端使用Ajax。官網(wǎng)
Blade:國(guó)人開(kāi)發(fā)的一個(gè)輕量級(jí)的MVC框架. 它擁有簡(jiǎn)潔的代碼,優(yōu)雅的設(shè)計(jì)。官網(wǎng)
業(yè)務(wù)流程管理套件
流程驅(qū)動(dòng)的軟件系統(tǒng)構(gòu)建。
jBPM:非常靈活的業(yè)務(wù)流程管理框架,致力于構(gòu)建開(kāi)發(fā)與業(yè)務(wù)分析人員之間的橋梁。官網(wǎng)
Activity:輕量級(jí)工作流和業(yè)務(wù)流程管理框架。官網(wǎng)github
資源
社區(qū)
靈堂出現(xiàn)三條黑蛇什么意思
編程網(wǎng)
當(dāng)前位置: 首頁(yè) SHENGHUO 正文
夢(mèng)到三條黑蛇預(yù)示著什么周公解夢(mèng)
shenghuo2023/1/11 3:05:48
夢(mèng)見(jiàn)3條蛇是什么意思預(yù)示夢(mèng)者最近的人際關(guān)系較為一般,容易招惹到小人,也為此會(huì)使自己的行為出現(xiàn)失誤,在工作中要注意多留意四周,不要輕易的去相信任何人,或者是你認(rèn)識(shí)的人。如果有談判局的話,建議多準(zhǔn)備幾套備選方案以防萬(wàn)一。
夢(mèng)見(jiàn)3條蛇是什么意思啊
不同人夢(mèng)見(jiàn)3條蛇是什么意思?jí)艟辰馕?/p>
創(chuàng)業(yè)的人夢(mèng)見(jiàn)三條蛇,代表開(kāi)始營(yíng)業(yè)不利,整頓一下,比較順利。
談婚論嫁的人夢(mèng)見(jiàn)三條蛇,說(shuō)明互上體諒,誠(chéng)心對(duì)待,婚姻可成。
懷有身孕的人夢(mèng)見(jiàn)三條蛇,預(yù)示生女,冬占生男。慎防動(dòng)胎流產(chǎn)。
夢(mèng)見(jiàn)3條蛇是什么意思相關(guān)夢(mèng)境解析
夢(mèng)見(jiàn)蛇咬我是什么意思?jí)舻缴咭ё约?,運(yùn)勢(shì)不錯(cuò),身邊將會(huì)發(fā)生幸運(yùn)的事情
夢(mèng)見(jiàn)蛇纏身是什么預(yù)兆暗示你身邊有人會(huì)背叛你。
夢(mèng)見(jiàn)蛇鉆進(jìn)自己的身體什么意思預(yù)示著運(yùn)勢(shì)很好,會(huì)獲得成功,也會(huì)獲利,是祥兆
夢(mèng)見(jiàn)3條蛇是什么意思心理學(xué)解析
適當(dāng)?shù)赜们楦衼?lái)打動(dòng)對(duì)方。這兩天遇到的問(wèn)題,如果用理性的談判無(wú)法達(dá)到目的的話,你很應(yīng)該考慮情感的戰(zhàn)略。雖然你不喜歡表現(xiàn)出內(nèi)心,但是若將其理解為另一種面具,你會(huì)不會(huì)覺(jué)得容易些?
夢(mèng)見(jiàn)3條蛇是什么意思的原版周公解夢(mèng)
夢(mèng)見(jiàn)蛇,主移徙事?!抖鼗捅緣?mèng)書(shū)》
夢(mèng)見(jiàn)3條蛇是什么意思的吉兇
得部下?lián)磔d,及長(zhǎng)輩引進(jìn),而得成功發(fā)展(五行順相生,從上生下,配置良好),易得財(cái)利、名譽(yù)、事業(yè)隆昌,長(zhǎng)壽少病之兆?!敬蠹?/p>
夢(mèng)見(jiàn)3條蛇是什么意思的宜忌
「宜」宜赤腳,宜各種優(yōu)雅,宜在街上牽手,宜清理硬盤(pán),宜敬酒不吃吃罰酒,宜謙讓;
「忌」忌乘車(chē)睡覺(jué),忌麻花辮,忌菠蘿蜜蘸腐乳吞服,忌與老友通電話
相關(guān)文章:
筆記本鍵盤(pán)進(jìn)水幾個(gè)按鍵失靈 還能修好么_蘋(píng)果首臺(tái)筆記本Mac Portable全拆卸,蒂姆·庫(kù)克簽名,無(wú)螺絲設(shè)計(jì),機(jī)械鍵盤(pán)...
水杯倒了?。?!我是如何拯救我進(jìn)水的MacBook Pro的?
macbook進(jìn)水不用怕
MacBook進(jìn)水記
MacBookPro進(jìn)水急救
macbook pro進(jìn)水緊急處理方案以及維修建議
【運(yùn)維面試】面試官: 說(shuō)一下OSI七層模型吧?
簡(jiǎn)述 osi七層模型
OSI七層網(wǎng)絡(luò)結(jié)構(gòu)詳解
OpenJudge NOI 2.1 8759:火車(chē)上的人數(shù)
Python + Scikit-learn 完美入門(mén)機(jī)器學(xué)習(xí)指南
【前端教程】手把手教你用 Next.js 搭建個(gè)人博客,從入門(mén)到吃雞!
使用aicp實(shí)現(xiàn)事件回調(diào)模式
2020 年 4 月編程語(yǔ)言排行榜:Scratch 首次進(jìn)入前 20,C 語(yǔ)言重回王者?
[LeetCode系列]鏈表環(huán)探測(cè)問(wèn)題II
貝葉斯方法指北|連丟 99 次硬幣都為正面,那第 100 次是正面還是反面?
Flask 項(xiàng)目實(shí)戰(zhàn)|從零開(kāi)發(fā) “StackOverflow” 問(wèn)答網(wǎng)站
使用wget出現(xiàn)多行進(jìn)度條
互聯(lián)網(wǎng)大廠的運(yùn)維都在干什么?30K 總監(jiān)為你解答
[LeetCode系列]子集枚舉問(wèn)題[有重復(fù)元素]
I2C上拉電阻的選擇-計(jì)算公式
【C語(yǔ)言進(jìn)階】 指針強(qiáng)化練習(xí)
分享一套Springboot個(gè)人博客系統(tǒng)源碼帶本地搭建教程
使用python-pptx創(chuàng)建PPT演示文檔功能實(shí)踐
云天勵(lì)飛在科創(chuàng)板獲準(zhǔn)注冊(cè):計(jì)劃募資30億元,陳寧為實(shí)際控制人
MacOS上效率神器 Alfred的基本用法
Java8新特性:Lambda表達(dá)式與函數(shù)式編程
【記錄二】圖層添加+坐標(biāo)系轉(zhuǎn)換理論+dva理論
C#語(yǔ)言實(shí)例源碼系列--影院電影售票系統(tǒng)-下
中科大2006年復(fù)試機(jī)試題
淘嘟嘟介紹 商務(wù)合作 免責(zé)聲明
CopyRight ? 淘嘟嘟版權(quán)所有
如何學(xué)好JAVA?
JAVA程序員之路
很多網(wǎng)友問(wèn)我學(xué)習(xí)Java有沒(méi)有什么捷徑,我說(shuō)“無(wú)他,唯手熟爾”。但是我卻很愿意將自己學(xué)習(xí)的一些經(jīng)驗(yàn)寫(xiě)出來(lái),以便后來(lái)者少走彎路,幫助別人是最大的快樂(lè)嘛!
要想學(xué)好Java,首先要知道Java的大致分類(lèi)。我們知道,自從Sun推出Java以來(lái),就力圖使之無(wú)所不包,所以Java發(fā)展到現(xiàn)在,按應(yīng)用來(lái)分主要分為三大塊:J2SE,J2ME和J2EE,這也就是Sun ONE(Open Net Environment)體系。J2SE就是Java2的標(biāo)準(zhǔn)版,主要用于桌面應(yīng)用軟件的編程;J2ME主要應(yīng)用于嵌入是系統(tǒng)開(kāi)發(fā),如手機(jī)和PDA的編程;J2EE是Java2的企業(yè)版,主要用于分布式的網(wǎng)絡(luò)程序的開(kāi)發(fā),如電子商務(wù)網(wǎng)站和ERP系統(tǒng)。J2SE開(kāi)發(fā)桌面應(yīng)用軟件比起VC,VB,DEPHI這些傳統(tǒng)開(kāi)發(fā)語(yǔ)言來(lái)說(shuō),優(yōu)勢(shì)好象并不明顯。J2ME對(duì)于初學(xué)者來(lái)說(shuō),好象又有點(diǎn)深?yuàn)W,而且一般開(kāi)發(fā)者很難有開(kāi)發(fā)環(huán)境。所以現(xiàn)在應(yīng)用最廣泛又最好學(xué)的就是J2EE了。J2EE又包括許多組件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要學(xué)習(xí)起來(lái)可不是一兩天的事。
那么又該如何學(xué)習(xí)J2EE呢?當(dāng)然Java語(yǔ)法得先看一看的,I/O包,Util包,Lang包你都熟悉了嗎?然后再?gòu)腏SP學(xué)起。如果你學(xué)過(guò)HTML,那么事情要好辦的多,如果沒(méi)有,那你快去補(bǔ)一補(bǔ)HTML基礎(chǔ)吧。其實(shí)JSP中的Java語(yǔ)法也不多,它更象一個(gè)腳本語(yǔ)言,有點(diǎn)象ASP。然后你就該學(xué)一學(xué)Servlet了。Servlet就是服務(wù)器端小程序,他負(fù)責(zé)生成發(fā)送給客戶端的HTML文件。JSP在執(zhí)行時(shí),也是先轉(zhuǎn)換成Servlet再運(yùn)行的。雖說(shuō)JSP理論上可以完全取代Servlet,這也是SUN推出JSP的本意,可是Servlet用來(lái)控制流程跳轉(zhuǎn)還是挺方便的,也令程序更清晰。接下來(lái)你應(yīng)該學(xué)習(xí)一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代碼的混亂方式了,這種方式跟ASP又有什么區(qū)別呢?還好,SUN提供了Javabean可以把你的JSP中的Java代碼封裝起來(lái),便于調(diào)用也便于重用。接著就是EJB了,EJB就是Enterprise JavaBean,看名字好象它是Javabean,可是它和Javabean還是有區(qū)別的。它是一個(gè)體系結(jié)構(gòu),你可以搭建更安全、更穩(wěn)定的企業(yè)應(yīng)用。它的大量代碼已由中間件(也就是我們常聽(tīng)到的Weblogic,Websphere這些J2EE服務(wù)器)完成了,所以我們要做的程序代碼量很少,大部分工作都在設(shè)計(jì)和配置中間件上。至于JDBC,就不用我多說(shuō)了,你如果用java編過(guò)存取數(shù)據(jù)庫(kù)的程序,就應(yīng)該很熟悉。還有,如果你要用Java編發(fā)送電子郵件的程序,你就得看看Javamail了。
好了,對(duì)Java和J2EE有了一些基本概念之后,你就應(yīng)該編一些程序了,千萬(wàn)不要紙上談兵哦。最好找一些有實(shí)例且?guī)Ч獗P(pán)的書(shū)來(lái)看,這樣看到好的程序就可以直接Ctrl+C再Ctrl+V,也不用勞您老大架再親自把它再輸一遍吧,再說(shuō)直接復(fù)制還不用怕出錯(cuò),何樂(lè)而不為呢!還有就是要經(jīng)常上一些好的Java編程文章,有好的文章要Cut下來(lái),有問(wèn)題盡管問(wèn),只要問(wèn)題不是太傻,一般高手都會(huì)回答你的。下面介紹幾個(gè)好的Java方面的編程網(wǎng)站:
CSDN論壇 中國(guó)最有名的技術(shù)論壇,《程序員》雜志就是他們出版的,你可以在上面提出問(wèn)題,馬上就有人回答你,如果你覺(jué)得好,你可以給那人加分;
Java研究組 上面有很多原創(chuàng)文章,高手還是挺多的;
Java開(kāi)發(fā)者 那里Java資料比較全;
java.com.cn 看這域名就知道有多牛,注冊(cè)用戶快接近一萬(wàn)了,同時(shí)在線人數(shù)也在一千左右,人氣很旺的;
IBM的開(kāi)發(fā)者網(wǎng) IBM永遠(yuǎn)的藍(lán)色巨人;
那么我書(shū)也看了,程序也做了,別人問(wèn)我的問(wèn)題我都能解決了,是不是就成為高手了呢?當(dāng)然沒(méi)那么簡(jiǎn)單,這只是萬(wàn)里長(zhǎng)征走完了第一步。不信?那你出去接一個(gè)項(xiàng)目,你知道怎么下手嗎,你知道怎么設(shè)計(jì)嗎,你知道怎么組織人員進(jìn)行開(kāi)發(fā)嗎?你現(xiàn)在腦子里除了一些散亂的代碼之外,可能再?zèng)]有別的東西了吧!你現(xiàn)在最缺的是實(shí)際的工作經(jīng)驗(yàn),而不是書(shū)本上那些憑空想出來(lái)的程序。所以你快去找一份Java的編程工作來(lái)做吧(如果是在校學(xué)生可以去做兼職?。?,在實(shí)踐中提高自己,那才是最快的。不過(guò)你得祈禱在公司里碰到一個(gè)高手,而且他還愿意不厭其煩地教你,這樣好象有點(diǎn)難哦!
還有一個(gè)辦法就是讀開(kāi)放源碼的程序了。我們知道開(kāi)放源碼大都出自高手,他們?cè)O(shè)計(jì)合理,考慮周到,再加上有廣大的程序員參與,代碼的價(jià)值自然是字字珠嘰,鏗鏘有力(對(duì)不起,最近《金裝四大才子》看多了)。學(xué)Java必讀的兩個(gè)開(kāi)源程序就是Jive和Pet Store.。Jive是國(guó)外一個(gè)非常著名的BBS程序,完全開(kāi)放源碼。論壇的設(shè)計(jì)采用了很多先進(jìn)的技術(shù),如Cache、用戶認(rèn)證、Filter、XML等,而且論壇完全屏蔽了對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),可以很輕易的在不同數(shù)據(jù)庫(kù)中移植。論壇還有方便的安裝和管理程序,這是我們平時(shí)編程時(shí)容易忽略的一部份(中國(guó)程序員一般只注重編程的技術(shù)含量,卻完全不考慮用戶的感受,這就是我們與國(guó)外軟件的差距所在)。Jive的資料在很多網(wǎng)站上都有,大家可以找來(lái)研究一下。相信你讀完代碼后,會(huì)有脫胎換骨的感覺(jué)。遺憾的是Jive從2.5以后就不再無(wú)條件的開(kāi)放源代碼,同時(shí)有l(wèi)icence限制。不過(guò)幸好還有中國(guó)一流的Java程序員關(guān)注它,外國(guó)人不開(kāi)源了,中國(guó)人就不能開(kāi)源嗎?這里向大家推薦一個(gè)漢化的Jive版本—J道。Jive(J道版)是由中國(guó)Java界大名鼎鼎的banq在Jive2.1版本基礎(chǔ)上改編而成, 全中文,增加了一些實(shí)用功能,如貼圖,用戶頭像和用戶資料查詢等,而且有一個(gè)開(kāi)發(fā)團(tuán)隊(duì)在不斷升級(jí)。你可以訪問(wèn)banq的網(wǎng) 去下載,或到同濟(jì)技術(shù)論壇的服務(wù)器上去下,安裝上有什么問(wèn)題,可以到論壇上去提問(wèn)。Pet Store.(寵物店)是SUN公司為了演示其J2EE編程規(guī)范而推出的開(kāi)放源碼的程序,應(yīng)該很具有權(quán)威性,想學(xué)J2EE和EJB的朋友不要錯(cuò)過(guò)了。
你一定會(huì)高興地說(shuō),哈哈,原來(lái)成為Java高手就這么簡(jiǎn)單啊!記得我也曾碰到過(guò)一個(gè)項(xiàng)目經(jīng)理,號(hào)稱(chēng)Java很簡(jiǎn)單,只要三個(gè)月就可以學(xué)會(huì)。其實(shí)說(shuō)這種話的人就如當(dāng)年小日本號(hào)稱(chēng)“三個(gè)月拿下中國(guó)”一樣大言不慚。不是我潑你冷水,你現(xiàn)在只是學(xué)到了Java的骨架,卻還沒(méi)有學(xué)到Java的精髓。接下來(lái)你得研究設(shè)計(jì)模式了。設(shè)計(jì)模式是高級(jí)程序員真正掌握面向?qū)ο蠛诵乃枷氲谋匦拚n。設(shè)計(jì)模式并不是一種具體"技術(shù)",它講述的是思想,它不僅僅展示了接口或抽象類(lèi)在實(shí)際案例中的靈活應(yīng)用和智慧,讓你能夠真正掌握接口或抽象類(lèi)的應(yīng)用,從而在原來(lái)的Java語(yǔ)言基礎(chǔ)上躍進(jìn)一步,更重要的是,設(shè)計(jì)模式反復(fù)向你強(qiáng)調(diào)一個(gè)宗旨:要讓你的程序盡可能的可重用。關(guān)于設(shè)計(jì)模式的資料,還是向大家推薦banq的網(wǎng) ,他把GOF的23種模式以通俗易懂的方式詮釋出來(lái),純Java描述,真是經(jīng)典中的經(jīng)典。有時(shí)間再研究一下MVC結(jié)構(gòu)(把Model-View-Control分離開(kāi)的設(shè)計(jì)思想)吧,現(xiàn)在很流行的Structs就是它的一種實(shí)現(xiàn)方式,不過(guò)Structs用起來(lái)實(shí)在是很繁,我們只要學(xué)習(xí)其精髓即可,我們完全可以設(shè)計(jì)自己的MVC結(jié)構(gòu)。然后你再研究一下軟件Refactoring(重整)和極限XP編程,相信你又會(huì)上一個(gè)臺(tái)階。
做完這些,你不如整理一下你的Java代碼,把那些經(jīng)典的程序和常見(jiàn)的應(yīng)用整理出來(lái),再精心打造一番,提高其重用性和可擴(kuò)展性。你再找?guī)讉€(gè)志同道合的朋友成立一個(gè)工作室吧,你可以去承接一些項(xiàng)目做了,一開(kāi)始可能有些困難,可是你有技術(shù)積累,又考慮周全,接下項(xiàng)目來(lái)可以迅速作完,相信大家以后都會(huì)來(lái)找你的,所以Money就嘩啦啦的來(lái)了。。。。。。
當(dāng)然你也可以參加一些開(kāi)源項(xiàng)目,一方面可以提高自己,另一方面也是為中國(guó)軟件事業(yè)做貢獻(xiàn)嘛!開(kāi)發(fā)者在互聯(lián)網(wǎng)上用CVS合作開(kāi)發(fā),用QQ,MSN,E-mail討論聯(lián)系,天南海北的程序員分散在各地卻同時(shí)開(kāi)發(fā)同一個(gè)軟件,是不是很有意思呢?
下面介紹兩個(gè)好的開(kāi)源項(xiàng)目網(wǎng)站:
湖北省軟件公共開(kāi)發(fā)平
共創(chuàng)聯(lián)
哇,好高興哦,我終于成為高手了!非也,非也。古人云:“識(shí)時(shí)務(wù)者為俊杰”。你知道計(jì)算機(jī)界現(xiàn)在的發(fā)展形勢(shì)嗎?你知道微軟的.NET藍(lán)圖和SUN ONE計(jì)劃之間的明爭(zhēng)暗斗嗎?你知道計(jì)算機(jī)技術(shù)將向何處發(fā)展嗎?其實(shí)從各大計(jì)算機(jī)廠商最近的動(dòng)作,都可以看出來(lái)“Web服務(wù)將是下一代互聯(lián)網(wǎng)應(yīng)用的制高點(diǎn)”,而微軟的.NET藍(lán)圖和SUN ONE計(jì)劃的斗爭(zhēng)焦點(diǎn),也就是Web服務(wù)。Web服務(wù)就是一個(gè)嶄新的分布式計(jì)算模型,它是一系列標(biāo)準(zhǔn)的綜合(XML,SOAP,UDDI,WSDL和WSFL等)。它使得不同語(yǔ)言編寫(xiě)的軟件能夠輕易的集成起來(lái),使網(wǎng)絡(luò)資源和Web站點(diǎn)變成一種服務(wù)而不是混亂的垃圾場(chǎng)。不遠(yuǎn)的將來(lái),我們就可以在家里點(diǎn)擊一下鼠標(biāo),就可以完成出門(mén)旅游的全部準(zhǔn)備工作,包括定飛機(jī)票,定旅游線路,定好房間等。請(qǐng)注意,這所有的一切都是Web站點(diǎn)間自動(dòng)完成的,再也不用象現(xiàn)在一樣,表面上是電子商務(wù),實(shí)際上很多環(huán)節(jié)都是人工操作。也許你會(huì)覺(jué)得這是天方夜談,不過(guò)就近的說(shuō),你也很有可能承接一個(gè)項(xiàng)目,要集成兩個(gè)企業(yè)的ERP系統(tǒng)。很有可能上游企業(yè)的系統(tǒng)是用Dephi編的,而下游企業(yè)的系統(tǒng)是用Java編的。你說(shuō)你是Java高手,大家都看者你怎么做呢。所以啊,你還得學(xué)習(xí)新技術(shù),如Web服務(wù),而且你Dephi也要懂一點(diǎn)吧(Dephi6現(xiàn)在已經(jīng)提供Web服務(wù)的控件了)。 你編的Java系統(tǒng),可能要和.NET集成,所以你.NET要懂一點(diǎn)吧?到最后,你可能發(fā)現(xiàn)你已經(jīng)成為Java高手了,但很多時(shí)間卻在搞別的技術(shù)。太極張三豐里說(shuō),最厲害的招式就是沒(méi)有招式,可能就是這個(gè)道理吧!
因?yàn)閯倓偱d起,所以網(wǎng)上Web服務(wù)的資料不是很多,我還是給大家推薦幾個(gè)網(wǎng)站吧:
中國(guó)UDDI技術(shù)聯(lián)
CSDN的柴曉路專(zhuān) (注:柴曉路也是互聯(lián)網(wǎng)上一個(gè)有名的人物,他發(fā)表過(guò)很多關(guān)于Web服務(wù)的文章,還出了一書(shū),應(yīng)該稱(chēng)的上是中國(guó)Web服務(wù)技術(shù)的先行者)
IBM的開(kāi)發(fā)者網(wǎng)絡(luò)的XMLWeb Service專(zhuān)欄:
IBM可是Web服務(wù)的力推者
嗚…你費(fèi)勁千心萬(wàn)苦,總算成為Java高手了,怎叫人不由喜極而泣呢!是啊,真不容易,真不簡(jiǎn)單,真叫人感動(dòng)?。∧敲创騻€(gè)電話告訴我吧,什么?我的電話號(hào)碼是多少?昏到,你打電話問(wèn)不就知道了嗎,真是的……
如上是在網(wǎng)上考下來(lái)的,但個(gè)人認(rèn)為SCJP證書(shū)也好,程序員等級(jí)證書(shū)也好,不要太看重它;關(guān)鍵是你手中有沒(méi)有技術(shù),能不能拿出活來(lái)。我面試時(shí)候都是以證書(shū)為參考,主要衡量你的手段還是提問(wèn)技術(shù)性問(wèn)題以及一些編程方面的基礎(chǔ)問(wèn)題。建議不要把證書(shū)看的太重。
參考資料:參考高手建議
求java編寫(xiě)的簡(jiǎn)單協(xié)同文本編輯器源碼~~~急!
package jettang;
import java.lang.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
//////////////////////////////////////////////
//主類(lèi)
public class STU {
public STU() {
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String args[]) {
new Frm_Main();
}
private void jbInit() throws Exception {
}
}
//主框架,數(shù)據(jù)庫(kù)
class Frm_Main implements ActionListener { //throws IOException
public static final int EXIT_ON_CLOSE = 0;
public JFrame frame;
public Container c;
public JMenuBar menuBar;
public JMenu mainMenu1;
public JMenu mainMenu2;
public JMenu mainMenu3;
public JMenuItem subMenu1[] = new JMenuItem[5];
public JMenuItem subMenu2[] = new JMenuItem[7];
public JMenuItem subMenu3[] = new JMenuItem[2];
JButton toolBarButton[] = new JButton[8];
public JToolBar toolBar;
//////////////////////////////////////////////
String strTip[] = {"姓名查詢...", "添加信息...",
"刪除...", "修改...", "修改確認(rèn)...",
"添加確認(rèn)...", "刪除確認(rèn)...", "關(guān)于產(chǎn)品信息:)"};
//////////////////////////////////////////////
// String id = new String();
String name = new String();
String sex = new String();
String age = new String();
String classid = new String();
String department = new String();
String call = new String();
//////////////////////////////////////////////
Connection con;
ResultSet rs;
Statement st;
// ResultSetMetaData rsmd;
// Vector columnHeads=new Vector();
// Vector rows = new Vector();
// Vector currentRow=new Vector();
///////////////////////////////////////////////
public JLabel classidL = new JLabel("班級(jí)");
public JLabel nameL = new JLabel("姓名");
public JLabel sexL = new JLabel("性別");
public JLabel ageL = new JLabel("年齡");
public JLabel departmentL = new JLabel("單位");
public JLabel callL = new JLabel("電話");
public JLabel tittleLabel = new JLabel();
//////////////////////////////////////////////
public JTextField classidT = new JTextField();
public JTextField nameT = new JTextField();
public JTextField sexT = new JTextField();
public JTextField ageT = new JTextField();
public JTextField departmentT = new JTextField();
public JTextField callT = new JTextField();
public JTextArea textT = new JTextArea();
//////////////////////////////////////////////
//////////////////////////////////////////////
public Frm_Main() {
/////////////////////////////////////////////////
frame = new JFrame("學(xué)籍管理系統(tǒng)V1.0");
c = frame.getContentPane();
c.setLayout(null);
menuBar = new JMenuBar();
toolBar = new JToolBar();
toolBar.setFloatable(false);
frame.setJMenuBar(menuBar);
frame.setResizable(false);
////////////////////////////////////////////////
mainMenu1 = new JMenu("管理");
String str1[] = {"添加", "刪除", "查詢", " ", "關(guān)閉"};
for (int i = 0; i 5; i++) {
if (i == 3) {
mainMenu1.addSeparator();
} else {
subMenu1[i] = new JMenuItem(str1[i]);
subMenu1[i].addActionListener(this);
mainMenu1.add(subMenu1[i]);
}
}
menuBar.add(mainMenu1);
/////////////////////////////////////////////////
mainMenu2 = new JMenu("*作");
String str2[] = {"查詢", "添加", "刪除", "修改",
"提交修改", "提交添加", "提交刪除"};
for (int i = 0; i 7; i++) {
subMenu2[i] = new JMenuItem(str2[i]);
subMenu2[i].addActionListener(this);
mainMenu2.add(subMenu2[i]);
}
menuBar.add(mainMenu2);
/////////////////////////////////////////////////
mainMenu3 = new JMenu("集體查詢");
String str3[] = {"按班級(jí)...", "按單位..."};
for (int i = 0; i 2; i++) {
subMenu3[i] = new JMenuItem(str3[i]);
subMenu3[i].addActionListener(this);
mainMenu3.add(subMenu3[i]);
}
menuBar.add(mainMenu3);
////////////////////////////////////////////////
String strToolBar[] = {"查詢", "添加", "刪除", "修改", "提交修改",
"提交添加", "提交刪除", "關(guān)于"};
for (int i = 0; i 8; i++) {
toolBarButton[i] = new JButton(strToolBar[i]);
toolBarButton[i].setToolTipText(strTip[i]);
toolBarButton[i].addActionListener(this);
toolBar.add(toolBarButton[i]);
}
toolBar.setLocation(0, 0);
toolBar.setSize(400, 30);
c.add(toolBar);
////////////////////////////////////////////////
classidL.setLocation(35, 40);
classidL.setSize(40, 20);
//classidL.setFont(new Font("",Font.BOLD,12));
c.add(classidL);
classidT.setLocation(90, 40);
classidT.setSize(200, 20);
//classidT.setEnabled(false);
c.add(classidT);
nameL.setLocation(35, 70);
nameL.setSize(40, 20);
c.add(nameL);
nameT.setLocation(90, 70);
nameT.setSize(200, 20);
c.add(nameT);
sexL.setLocation(35, 100);
sexL.setSize(40, 20);
c.add(sexL);
sexT.setLocation(90, 100);
sexT.setSize(200, 20);
c.add(sexT);
ageL.setLocation(35, 130);
ageL.setSize(40, 20);
c.add(ageL);
ageT.setLocation(90, 130);
ageT.setSize(200, 20);
c.add(ageT);
departmentL.setLocation(35, 160);
departmentL.setSize(40, 20);
c.add(departmentL);
departmentT.setLocation(90, 160);
departmentT.setSize(200, 20);
c.add(departmentT);
callL.setLocation(35, 190);
callL.setSize(40, 20);
c.add(callL);
callT.setLocation(90, 190);
callT.setSize(200, 20);
c.add(callT);
/////////////////////////////////////////////////
tittleLabel.setText("----------集體查詢結(jié)果--------");
tittleLabel.setSize(300, 20);
tittleLabel.setLocation(10, 210);
c.add(tittleLabel);
////////////////////////////////////////////
textT.setSize(400, 300);
textT.setLocation(10, 240);
c.add(textT, 14);
///////////////////////////////////////////////
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 650);
frame.setLocation(200, 200);
frame.setVisible(true);
conDB();
}
//以上是框架設(shè)計(jì)
//JDBC
public void conDB() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, "數(shù)據(jù)庫(kù)錯(cuò)誤");
}
try {
con = DriverManager.getConnection("jdbc:odbc:jettang", "sa", "");
st = con.createStatement();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "數(shù)據(jù)庫(kù)連接失敗");
}
}
//關(guān)閉連接
public void closeDB() {
try {
st.close();
con.close();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "數(shù)據(jù)庫(kù)關(guān)閉失敗");
}
}
//事件響應(yīng)
public void actionPerformed(ActionEvent e) {
//////////////////////////////////////////////
if (e.getSource() == toolBarButton[7]) {
JOptionPane.showMessageDialog(null, "當(dāng)前版本1.0,*作幫助請(qǐng)看使用說(shuō)明書(shū)");
}
/////////////////////////////////////////////查詢(按姓名)
if (e.getSource() == subMenu2[0] || e.getSource() == toolBarButton[0] ||
e.getSource() == subMenu1[2]) {
String idid = JOptionPane.showInputDialog("請(qǐng)輸入學(xué)生姓名");
if (idid.trim() != "") {
String strSQL = "select * from stuinfo where name = + idid +
";
try {
rs = st.executeQuery(strSQL);
int count = 0;
while (rs.next()) {
classid = rs.getString("classid");
name = rs.getString("name");
department = rs.getString("department");
sex = rs.getString("sex");
age = rs.getString("age");
call = rs.getString("call");
++count;
}
if (count == 0) {
JOptionPane.showMessageDialog(null, "無(wú)此信息");
} else {
classidT.setText(classid);
nameT.setText(name);
sexT.setText(sex);
ageT.setText(age);
callT.setText(call);
departmentT.setText(department);
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "查詢失敗");
}
}
}
/////////////////////////////////////////////關(guān)閉
if (e.getSource() == subMenu1[4]) {
frame.dispose();
closeDB();
}
/////////////////////////////////////////////添加
if (e.getSource() == subMenu1[0] || e.getSource() == subMenu2[1] ||
e.getSource() == toolBarButton[1]) {
JOptionPane.showMessageDialog(null, "請(qǐng)輸入你添加的信息再點(diǎn)擊提交添加鍵");
classidT.setEnabled(true);
classidT.setText("");
nameT.setText("");
sexT.setText("");
ageT.setText("");
callT.setText("");
departmentT.setText("");
}
/////////////////////////////////////////////提交添加
if (e.getSource() == toolBarButton[5] || e.getSource() == subMenu2[5]) {
if ((classidT.getText().trim()).equals("") ||
(nameT.getText().trim()).equals("") ||
(sexT.getText().trim()).equals("") ||
(ageT.getText().trim()).equals("") ||
(callT.getText().trim()).equals("") ||
(departmentT.getText().trim()).equals("")) {
JOptionPane.showMessageDialog(null, "請(qǐng)先點(diǎn)擊添加鍵");
} else {
classid = classidT.getText();
name = nameT.getText();
sex = sexT.getText();
age = ageT.getText();
call = callT.getText();
department = departmentT.getText();
String strSQL =
"insert into stuinfo(classid,name,sex,age,call,department) values( +
classid + , +
name + , + sex + , + age + , + call + , +
department + )";
try {
st.executeUpdate(strSQL);
} catch (Exception exx) {
JOptionPane.showMessageDialog(null, "添加失敗");
return;
}
JOptionPane.showMessageDialog(null, "添加成功");
classidT.setText("");
nameT.setText("");
sexT.setText("");
ageT.setText("");
callT.setText("");
departmentT.setText("");
}
}
////////////////////////////////////////////提交修改
if (e.getSource() == subMenu2[4] || e.getSource() == toolBarButton[4]) {
if ((classidT.getText().trim()).equals("") ||
(nameT.getText().trim()).equals("") ||
(sexT.getText().trim()).equals("")
|| (ageT.getText().trim()).equals("") ||
(callT.getText().trim()).equals("") ||
(departmentT.getText().trim()).equals("")) {
JOptionPane.showMessageDialog(null, "請(qǐng)先點(diǎn)擊修改鍵");
return;
} else {
classid = classidT.getText();
name = nameT.getText();
sex = sexT.getText();
age = ageT.getText();
call = callT.getText();
department = departmentT.getText();
String strSQL = "update stuinfo set classid= + classid +
,sex= + sex + ,age= + age + ,call= +
call + ,department= + department + " +
"where name= + name + ";
try {
st.executeUpdate(strSQL);
} catch (Exception exx) {
JOptionPane.showMessageDialog(null, "修改失敗");
return;
}
JOptionPane.showMessageDialog(null, "修改成功");
classidT.setText("");
nameT.setText("");
sexT.setText("");
ageT.setText("");
callT.setText("");
departmentT.setText("");
}
}
///////////////////////////////////////////////修改
if (e.getSource() == subMenu2[3] || e.getSource() == toolBarButton[3]) {
String idid = JOptionPane.showInputDialog("請(qǐng)輸入你要修改的學(xué)生姓名后點(diǎn)擊提交修改鍵確認(rèn)");
if (idid.trim() != "") {
String strSQL = "select * from stuinfo where name = + idid +
";
try {
rs = st.executeQuery(strSQL);
int count = 0;
while (rs.next()) {
classid = rs.getString("classid");
name = rs.getString("name");
department = rs.getString("department");
sex = rs.getString("sex");
age = rs.getString("age");
call = rs.getString("call");
++count;
}
if (count == 0) {
JOptionPane.showMessageDialog(null, "無(wú)此信息");
} else {
classidT.setText(classid);
nameT.setText(name);
sexT.setText(sex);
ageT.setText(age);
callT.setText(call);
departmentT.setText(department);
classidT.setEnabled(false);
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "修改失敗");
}
}
}
/////////////////////////////////////////////////刪除
if (e.getSource() == subMenu2[2] || e.getSource() == toolBarButton[2] ||
e.getSource() == subMenu1[1]) {
String idDel = JOptionPane.showInputDialog("請(qǐng)輸入要?jiǎng)h除的學(xué)生姓名后點(diǎn)擊提交刪除鍵確認(rèn)");
if (idDel.trim() != "") {
String strSQL = "select * from stuinfo where name = + idDel +
";
try {
rs = st.executeQuery(strSQL);
int count = 0;
while (rs.next()) {
classid = rs.getString("classid");
name = rs.getString("name");
department = rs.getString("department");
sex = rs.getString("sex");
age = rs.getString("age");
call = rs.getString("call");
++count;
}
if (count == 0) {
JOptionPane.showMessageDialog(null, "無(wú)此信息");
} else {
classidT.setText(classid);
nameT.setText(name);
sexT.setText(sex);
ageT.setText(age);
callT.setText(call);
departmentT.setText(department);
classidT.setEnabled(false);
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "刪除失敗");
}
}
}
//////////////////////////////////////////////////提交刪除
if (e.getSource() == toolBarButton[6] ||
e.getSource() == subMenu2[6]) {
if ((classidT.getText().trim()).equals("") ||
(nameT.getText().trim()).equals("") ||
(sexT.getText().trim()).equals("") ||
(ageT.getText().trim()).equals("") ||
(callT.getText().trim()).equals("") ||
(departmentT.getText().trim()).equals("")) {
JOptionPane.showMessageDialog(null, "請(qǐng)先點(diǎn)擊刪除鍵");
return;
} else {
name = nameT.getText();
String strSQL = "delete from stuinfo where name= + name +
";
try {
st.executeUpdate(strSQL);
} catch (Exception exx) {
JOptionPane.showMessageDialog(null, "刪除失敗");
return;
}
JOptionPane.showMessageDialog(null, "刪除成功");
classidT.setText("");
nameT.setText("");
sexT.setText("");
ageT.setText("");
callT.setText("");
departmentT.setText("");
}
}
//////////////////////////////////////////////集體查詢(按班級(jí))
if (e.getSource() == subMenu3[0]) {
classidT.setText("");
nameT.setText("");
sexT.setText("");
ageT.setText("");
callT.setText("");
departmentT.setText("");
if ((classidT.getText().trim()).equals("")) {
String idclass = JOptionPane.showInputDialog("請(qǐng)輸入班級(jí)");
String strSQL = "select * from stuinfo where classid= +
idclass +
";
try {
rs = st.executeQuery(strSQL);
displayres(rs);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "查詢失敗");
}
} else {
String idclass = classidT.getText();
String strSQL = "select * from stuinfo where classid= +
idclass +
";
try {
rs = st.executeQuery(strSQL);
displayres(rs);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "查詢失敗");
}
}
}
////////////////////////////按單位
if (e.getSource() == subMenu3[1]) {
classidT.setText("");
nameT.setText("");
sexT.setText("");
ageT.setText("");
callT.setText("");
departmentT.setText("");
if ((departmentT.getText().trim()).equals("")) {
String idclass = JOptionPane.showInputDialog("請(qǐng)輸入單位");
String strSQL = "select * from stuinfo where department= +
idclass +
";
try {
rs = st.executeQuery(strSQL);
displayres(rs);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "查詢失敗");
}
} else {
String idclass = departmentT.getText();
String strSQL = "select * from stuinfo where department= +
idclass +
";
try {
rs = st.executeQuery(strSQL);
displayres(rs);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "查詢失敗");
}
}
}
}
public void displayres(ResultSet rs1) throws SQLException {
//定位到達(dá)第一條記錄
boolean moreRecords = rs1.next();
//如果沒(méi)有記錄,則提示一條消息
if (!moreRecords) {
JOptionPane.showMessageDialog(null, "無(wú)此記錄");
return;
}
try {
//獲取數(shù)據(jù)
getNextRow(rs1);
//刷新Table
c.validate();
}
catch (SQLException sqlex) {
sqlex.printStackTrace();
}
}
public void getNextRow(ResultSet rs2) throws
SQLException {
int count = 1;
while (rs2.next()) {
name = " 姓名:" + rs2.getString(1);
age = " 年齡:" + rs2.getString(2) + " 單位:";
department = rs2.getString(3) + "
";
textT.append(count + "." + name + age + department);
count++;
}
}
}
Java語(yǔ)言好學(xué)么?
Java是一門(mén)面向?qū)ο缶幊陶Z(yǔ)言,不僅吸收了C++語(yǔ)言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語(yǔ)言具有功能強(qiáng)大和簡(jiǎn)單易用兩個(gè)特征。Java語(yǔ)言作為靜態(tài)面向?qū)ο缶幊陶Z(yǔ)言的代表,極好地實(shí)現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程[1]。
Java具有簡(jiǎn)單性、面向?qū)ο?、分布式、健壯性、安全性、平臺(tái)獨(dú)立與可移植性、多線程、動(dòng)態(tài)性等特點(diǎn)[2]。Java可以編寫(xiě)桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等[3]。
外文名
Java
現(xiàn)公司
Oracle
推出時(shí)間
1995年5月
快速
導(dǎo)航
編程開(kāi)發(fā)
語(yǔ)言特點(diǎn)
工作原理
語(yǔ)言基礎(chǔ)
語(yǔ)言標(biāo)準(zhǔn)
語(yǔ)言規(guī)范
技術(shù)應(yīng)用
學(xué)習(xí)指南
語(yǔ)言評(píng)價(jià)
發(fā)展歷程
20世紀(jì)90年代,硬件領(lǐng)域出現(xiàn)了單片式計(jì)算機(jī)系統(tǒng),這種價(jià)格低廉的系統(tǒng)一出現(xiàn)就立即引起了自動(dòng)控制領(lǐng)域人員的注意,因?yàn)槭褂盟梢源蠓忍嵘M(fèi)類(lèi)電子產(chǎn)品(如電視機(jī)頂盒、面包烤箱、移動(dòng)電話等)的智能化程度。Sun公司為了搶占市場(chǎng)先機(jī),在1991年成立了一個(gè)稱(chēng)為Green的項(xiàng)目小組,帕特里克、詹姆斯·高斯林、麥克·舍林丹和其他幾個(gè)工程師一起組成的工作小組在加利福尼亞州門(mén)洛帕克市沙丘路的一個(gè)小工作室里面研究開(kāi)發(fā)新技術(shù),專(zhuān)攻計(jì)算機(jī)在家電產(chǎn)品上的嵌入式應(yīng)用。
JAVA
由于C++所具有的優(yōu)勢(shì),該項(xiàng)目組的研究人員首先考慮采用C++來(lái)編寫(xiě)程序。但對(duì)于硬件資源極其匱乏的單片式系統(tǒng)來(lái)說(shuō),C++程序過(guò)于復(fù)雜和龐大。另外由于消費(fèi)電子產(chǎn)品所采用的嵌入式處理器芯片的種類(lèi)繁雜,如何讓編寫(xiě)的程序跨平臺(tái)運(yùn)行也是個(gè)難題。為了解決困難,他們首先著眼于語(yǔ)言的開(kāi)發(fā),假設(shè)了一種結(jié)構(gòu)簡(jiǎn)單、符合嵌入式應(yīng)用需要的硬件平臺(tái)體系結(jié)構(gòu)并為其制定了相應(yīng)的規(guī)范,其中就定義了這種硬件平臺(tái)的二進(jìn)制機(jī)器碼指令系統(tǒng)(即后來(lái)成為“字節(jié)碼”的指令系統(tǒng)),以待語(yǔ)言開(kāi)發(fā)成功后,能有半導(dǎo)體芯片生產(chǎn)商開(kāi)發(fā)和生產(chǎn)這種硬件平臺(tái)。對(duì)于新語(yǔ)言的設(shè)計(jì),Sun公司研發(fā)人員并沒(méi)有開(kāi)發(fā)一種全新的語(yǔ)言,而是根據(jù)嵌入式軟件的要求,對(duì)C++進(jìn)行了改造,去除了留在C++的一些不太實(shí)用及影響安全的成分,并結(jié)合嵌入式系統(tǒng)的實(shí)時(shí)性要求,開(kāi)發(fā)了一種稱(chēng)為Oak的面向?qū)ο笳Z(yǔ)言。
由于在開(kāi)發(fā)Oak語(yǔ)言時(shí),尚且不存在運(yùn)行字節(jié)碼的硬件平臺(tái),所以為了在開(kāi)發(fā)時(shí)可以對(duì)這種語(yǔ)言進(jìn)行實(shí)驗(yàn)研究,他們就在已有的硬件和軟件平臺(tái)基礎(chǔ)上,按照自己所指定的規(guī)范,用軟件建設(shè)了一個(gè)運(yùn)行平臺(tái),整個(gè)系統(tǒng)除了比C++更加簡(jiǎn)單之外,沒(méi)有什么大的區(qū)別。1992年的夏天,當(dāng)Oak語(yǔ)言開(kāi)發(fā)成功后,研究者們向硬件生產(chǎn)商進(jìn)行演示了Green操作系統(tǒng)、Oak的程序設(shè)計(jì)語(yǔ)言、類(lèi)庫(kù)和其硬件,以說(shuō)服他們使用Oak語(yǔ)言生產(chǎn)硬件芯片,但是,硬件生產(chǎn)商并未對(duì)此產(chǎn)生極大的熱情。因?yàn)樗麄冋J(rèn)為,在所有人對(duì)Oak語(yǔ)言還一無(wú)所知的情況下,就生產(chǎn)硬件產(chǎn)品的風(fēng)險(xiǎn)實(shí)在太大了,所以O(shè)ak語(yǔ)言也就因?yàn)槿狈τ布闹С侄鵁o(wú)法進(jìn)入市場(chǎng),從而被擱置了下來(lái)。
1994年6、7月間,在經(jīng)歷了一場(chǎng)歷時(shí)三天的討論之后,團(tuán)隊(duì)決定再一次改變了努力的目標(biāo),這次他們決定將該技術(shù)應(yīng)用于萬(wàn)維網(wǎng)。他們認(rèn)為隨著Mosaic瀏覽器的到來(lái),因特網(wǎng)正在向同樣的高度互動(dòng)的遠(yuǎn)景演變,而這一遠(yuǎn)景正是他們?cè)谟芯€電視網(wǎng)中看到的。作為原型,帕特里克·諾頓寫(xiě)了一個(gè)小型萬(wàn)維網(wǎng)瀏覽器WebRunner。[4]
1995年,互聯(lián)網(wǎng)的蓬勃發(fā)展給了Oak機(jī)會(huì)。業(yè)界為了使死板、單調(diào)的靜態(tài)網(wǎng)頁(yè)能夠“靈活”起來(lái),急需一種軟件技術(shù)來(lái)開(kāi)發(fā)一種程序,這種程序可以通過(guò)網(wǎng)絡(luò)傳播并且能夠跨平臺(tái)運(yùn)行。于是,世界各大IT企業(yè)為此紛紛投入了大量的人力、物力和財(cái)力。這個(gè)時(shí)候,Sun公司想起了那個(gè)被擱置起來(lái)很久的Oak,并且重新審視了那個(gè)用軟件編寫(xiě)的試驗(yàn)平臺(tái),由于它是按照嵌入式系統(tǒng)硬件平臺(tái)體系結(jié)構(gòu)進(jìn)行編寫(xiě)的,所以非常小,特別適用于網(wǎng)絡(luò)上的傳輸系統(tǒng),而Oak也是一種精簡(jiǎn)的語(yǔ)言,程序非常小,適合在網(wǎng)絡(luò)上傳輸。Sun公司首先推出了可以嵌入網(wǎng)頁(yè)并且可以隨同網(wǎng)頁(yè)在網(wǎng)絡(luò)上傳輸?shù)腁pplet(Applet是一種將小程序嵌入到網(wǎng)頁(yè)中進(jìn)行執(zhí)行的技術(shù)),并將Oak更名為Java(在申請(qǐng)注冊(cè)商標(biāo)時(shí),發(fā)現(xiàn)Oak已經(jīng)被人使用了,再想了一系列名字之后,最終,使用了提議者在喝一杯Java咖啡時(shí)無(wú)意提到的Java詞語(yǔ))。5月23日,Sun公司在Sun world會(huì)議上正式發(fā)布Java和HotJava瀏覽器。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微軟等各大公司都紛紛停止了自己的相關(guān)開(kāi)發(fā)項(xiàng)目,競(jìng)相購(gòu)買(mǎi)了Java使用許可證,并為自己的產(chǎn)品開(kāi)發(fā)了相應(yīng)的Java平臺(tái)。[5] [6]
1996年1月,Sun公司發(fā)布了Java的第一個(gè)開(kāi)發(fā)工具包(JDK 1.0),這是Java發(fā)展歷程中的重要里程碑,標(biāo)志著Java成為一種獨(dú)立的開(kāi)發(fā)工具。9月,約8.3萬(wàn)個(gè)網(wǎng)頁(yè)應(yīng)用了Java技術(shù)來(lái)制作。10月,Sun公司發(fā)布了Java平臺(tái)的第一個(gè)即時(shí)(JIT)編譯器。
1997年2月,JDK 1.1面世,在隨后的3周時(shí)間里,達(dá)到了22萬(wàn)次的下載量。4月2日,Java One會(huì)議召開(kāi),參會(huì)者逾一萬(wàn)人,創(chuàng)當(dāng)時(shí)全球同類(lèi)會(huì)議規(guī)模之紀(jì)錄。9月,Java Developer Connection社區(qū)成員超過(guò)10萬(wàn)。
1998年12月8日,第二代Java平臺(tái)的企業(yè)版J2EE發(fā)布。1999年6月,Sun公司發(fā)布了第二代Java平臺(tái)(簡(jiǎn)稱(chēng)為Java2)的3個(gè)版本:J2ME(Java2 Micro Edition,Java2平臺(tái)的微型版),應(yīng)用于移動(dòng)、無(wú)線及有限資源的環(huán)境;J2SE(Java 2 Standard Edition,Java 2平臺(tái)的標(biāo)準(zhǔn)版),應(yīng)用于桌面環(huán)境;J2EE(Java 2Enterprise Edition,Java 2平臺(tái)的企業(yè)版),應(yīng)用于基于Java的應(yīng)用服務(wù)器。Java 2平臺(tái)的發(fā)布,是Java發(fā)展過(guò)程中最重要的一個(gè)里程碑,標(biāo)志著Java的應(yīng)用開(kāi)始普及。
1999年4月27日,HotSpot虛擬機(jī)發(fā)布。HotSpot虛擬機(jī)發(fā)布時(shí)是作為JDK 1.2的附加程序提供的,后來(lái)它成為了JDK 1.3及之后所有版本的Sun JDK的默認(rèn)虛擬機(jī)[7] 。
2000年5月,JDK1.3、JDK1.4和J2SE1.3相繼發(fā)布,幾周后其獲得了Apple公司Mac OS X的工業(yè)標(biāo)準(zhǔn)的支持。2001年9月24日,J2EE1.3發(fā)布。2002年2月26日,J2SE1.4發(fā)布。自此Java的計(jì)算能力有了大幅提升,與J2SE1.3相比,其多了近62%的類(lèi)和接口。在這些新特性當(dāng)中,還提供了廣泛的XML支持、安全套接字(Socket)支持(通過(guò)SSL與TLS協(xié)議)、全新的I/OAPI、正則表達(dá)式、日志與斷言。2004年9月30日,J2SE1.5發(fā)布,成為Java語(yǔ)言發(fā)展史上的又一里程碑。為了表示該版本的重要性,J2SE 1.5更名為Java SE 5.0(內(nèi)部版本號(hào)1.5.0),代號(hào)為“Tiger”,Tiger包含了從1996年發(fā)布1.0版本以來(lái)的最重大的更新,其中包括泛型支持、基本類(lèi)型的自動(dòng)裝箱、改進(jìn)的循環(huán)、枚舉類(lèi)型、格式化I/O及可變參數(shù)。
Java創(chuàng)始人之一:詹姆斯·高斯林
2005年6月,在Java One大會(huì)上,Sun公司發(fā)布了Java SE 6。此時(shí),Java的各種版本已經(jīng)更名,已取消其中的數(shù)字2,如J2EE更名為JavaEE,J2SE更名為JavaSE,J2ME更名為JavaME。[8]
2006年11月13日,Java技術(shù)的發(fā)明者Sun公司宣布,將Java技術(shù)作為免費(fèi)軟件對(duì)外發(fā)布。Sun公司正式發(fā)布的有關(guān)Java平臺(tái)標(biāo)準(zhǔn)版的第一批源代碼,以及Java迷你版的可執(zhí)行源代碼。從2007年3月起,全世界所有的開(kāi)發(fā)人員均可對(duì)Java源代碼進(jìn)行修改[9] 。
2009年,甲骨文公司宣布收購(gòu)Sun[10] 。2010年,Java編程語(yǔ)言的共同創(chuàng)始人之一詹姆斯·高斯林從Oracle公司辭職。2011年,甲骨文公司舉行了全球性的活動(dòng),以慶祝Java7的推出,隨后Java7正式發(fā)布。2014年,甲骨文公司發(fā)布了Java8正式版[11] 。
編程開(kāi)發(fā)
編程環(huán)境
Java概念圖
JDK(Java Development Kit)稱(chēng)為Java開(kāi)發(fā)包或Java開(kāi)發(fā)工具,是一個(gè)編寫(xiě)Java的Applet小程序和應(yīng)用程序的程序開(kāi)發(fā)環(huán)境。JDK是整個(gè)Java的核心,包括了Java運(yùn)行環(huán)境(Java Runtime Environment),一些Java工具和Java的核心類(lèi)庫(kù)(Java API)。不論什么Java應(yīng)用服務(wù)器實(shí)質(zhì)都是內(nèi)置了某個(gè)版本的JDK。主流的JDK是Sun公司發(fā)布的JDK,除了Sun之外,還有很多公司和組織都開(kāi)發(fā)了自己的JDK,例如,IBM公司開(kāi)發(fā)的JDK,BEA公司的Jrocket,還有GNU組織開(kāi)發(fā)的JDK[13] 。
另外,可以把Java API類(lèi)庫(kù)中的Java SE API子集和Java虛擬機(jī)這兩部分統(tǒng)稱(chēng)為JRE(JAVA Runtime Environment),JRE是支持Java程序運(yùn)行的標(biāo)準(zhǔn)環(huán)境[14] 。
JRE是個(gè)運(yùn)行環(huán)境,JDK是個(gè)開(kāi)發(fā)環(huán)境。因此寫(xiě)Java程序的時(shí)候需要JDK,而運(yùn)行Java程序的時(shí)候就需要JRE。而JDK里面已經(jīng)包含了JRE,因此只要安裝了JDK,就可以編輯Java程序,也可以正常運(yùn)行Java程序。但由于JDK包含了許多與運(yùn)行無(wú)關(guān)的內(nèi)容,占用的空間較大,因此運(yùn)行普通的Java程序無(wú)須安裝JDK,而只需要安裝JRE即可[15] 。
編程工具
Eclipse:一個(gè)開(kāi)放源代碼的、基于Java的可擴(kuò)展開(kāi)發(fā)平臺(tái)[16] 。
NetBeans:開(kāi)放源碼的Java集成開(kāi)發(fā)環(huán)境,適用于各種客戶機(jī)和Web應(yīng)用。
IntelliJ IDEA:在代碼自動(dòng)提示、代碼分析等方面的具有很好的功能。[17]
MyEclipse:由Genuitec公司開(kāi)發(fā)的一款商業(yè)化軟件,是應(yīng)用比較廣泛的Java應(yīng)用程序集成開(kāi)發(fā)環(huán)境[18] 。
EditPlus:如果正確配置Java的編譯器“Javac”以及解釋器“Java”后,可直接使用EditPlus編譯執(zhí)行Java程序[19] 。
語(yǔ)言特點(diǎn)
1.簡(jiǎn)單性
Java看起來(lái)設(shè)計(jì)得很像C++,但是為了使語(yǔ)言小和容易熟悉,設(shè)計(jì)者們把C++語(yǔ)言中許多可用的特征去掉了,這些特征是一般程序員很少使用的。例如,Java不支持go to語(yǔ)句,代之以提供break和continue語(yǔ)句以及異常處理。Java還剔除了C++的操作符過(guò)載(overload)和多繼承特征,并且不使用主文件,免去了預(yù)處理程序。因?yàn)镴ava沒(méi)有結(jié)構(gòu),數(shù)組和串都是對(duì)象,所以不需要指針。Java能夠自動(dòng)處理對(duì)象的引用和間接引用,實(shí)現(xiàn)自動(dòng)的無(wú)用單元收集,使用戶不必為存儲(chǔ)管理問(wèn)題煩惱,能更多的時(shí)間和精力花在研發(fā)上。
2.面向?qū)ο?/p>
Java是一個(gè)面向?qū)ο蟮恼Z(yǔ)言。對(duì)程序員來(lái)說(shuō),這意味著要注意應(yīng)中的數(shù)據(jù)和操縱數(shù)據(jù)的方法(method),而不是嚴(yán)格地用過(guò)程來(lái)思考。在一個(gè)面向?qū)ο蟮南到y(tǒng)中,類(lèi)(class)是數(shù)據(jù)和操作數(shù)據(jù)的方法的集合。數(shù)據(jù)和方法一起描述對(duì)象(object)的狀態(tài)和行為。每一對(duì)象是其狀態(tài)和行為的封裝。類(lèi)是按一定體系和層次安排的,使得子類(lèi)可以從超類(lèi)繼承行為。在這個(gè)類(lèi)層次體系中有一個(gè)根類(lèi),它是具有一般行為的類(lèi)。Java程序是用類(lèi)來(lái)組織的。
Java還包括一個(gè)類(lèi)的擴(kuò)展集合,分別組成各種程序包(Package),用戶可以在自己的程序中使用。例如,Java提供產(chǎn)生圖形用戶接口部件的類(lèi)(java.awt包),這里awt是抽象窗口工具集(abstract windowing toolkit)的縮寫(xiě),處理輸入輸出的類(lèi)(java.io包)和支持網(wǎng)絡(luò)功能的類(lèi)(java.net包)。
3.分布性
Java設(shè)計(jì)成支持在網(wǎng)絡(luò)上應(yīng)用,它是分布式語(yǔ)言。Java既支持各種層次的網(wǎng)絡(luò)連接,又以Socket類(lèi)支持可靠的流(stream)網(wǎng)絡(luò)連接,所以用戶可以產(chǎn)生分布式的客戶機(jī)和服務(wù)器。
網(wǎng)絡(luò)變成軟件應(yīng)用的分布運(yùn)載工具。Java程序只要編寫(xiě)一次,就可到處運(yùn)行。
4.編譯和解釋性
Java編譯程序生成字節(jié)碼(byte-code),而不是通常的機(jī)器碼。Java字節(jié)碼提供對(duì)體系結(jié)構(gòu)中性的目標(biāo)文件格式,代碼設(shè)計(jì)成可有效地傳送程序到多個(gè)平臺(tái)。Java程序可以在任何實(shí)現(xiàn)了Java解釋程序和運(yùn)行系統(tǒng)(run-time system)的系統(tǒng)上運(yùn)行。
在一個(gè)解釋性的環(huán)境中,程序開(kāi)發(fā)的標(biāo)準(zhǔn)“鏈接”階段大大消失了。如果說(shuō)Java還有一個(gè)鏈接階段,它只是把新類(lèi)裝進(jìn)環(huán)境的過(guò)程,它是增量式的、輕量級(jí)的過(guò)程。因此,Java支持快速原型和容易試驗(yàn),它將導(dǎo)致快速程序開(kāi)發(fā)。這是一個(gè)與傳統(tǒng)的、耗時(shí)的“編譯、鏈接和測(cè)試”形成鮮明對(duì)比的精巧的開(kāi)發(fā)過(guò)程。
5.穩(wěn)健性
Java原來(lái)是用作編寫(xiě)消費(fèi)類(lèi)家用電子產(chǎn)品軟件的語(yǔ)言,所以它是被設(shè)計(jì)成寫(xiě)高可靠和穩(wěn)健軟件的。Java消除了某些編程錯(cuò)誤,使得用它寫(xiě)可靠軟件相當(dāng)容易。
Java
Java是一個(gè)強(qiáng)類(lèi)型語(yǔ)言,它允許擴(kuò)展編譯時(shí)檢查潛在類(lèi)型不匹配問(wèn)題的功能。Java要求顯式的方法聲明,它不支持C風(fēng)格的隱式聲明。這些嚴(yán)格的要求保證編譯程序能捕捉調(diào)用錯(cuò)誤,這就導(dǎo)致更可靠的程序。
可靠性方面最重要的增強(qiáng)之一是Java的存儲(chǔ)模型。Java不支持指針,它消除重寫(xiě)存儲(chǔ)和訛誤數(shù)據(jù)的可能性。類(lèi)似地,Java自動(dòng)的“無(wú)用單元收集”預(yù)防存儲(chǔ)漏泄和其它有關(guān)動(dòng)態(tài)存儲(chǔ)分配和解除分配的有害錯(cuò)誤。Java解釋程序也執(zhí)行許多運(yùn)行時(shí)的檢查,諸如驗(yàn)證所有數(shù)組和串訪問(wèn)是否在界限之內(nèi)。
異常處理是Java中使得程序更穩(wěn)健的另一個(gè)特征。異常是某種類(lèi)似于錯(cuò)誤的異常條件出現(xiàn)的信號(hào)。使用try/catch/finally語(yǔ)句,程序員可以找到出錯(cuò)的處理代碼,這就簡(jiǎn)化了出錯(cuò)處理和恢復(fù)的任務(wù)。
6.安全性
Java的存儲(chǔ)分配模型是它防御惡意代碼的主要方法之一。Java沒(méi)有指針,所以程序員不能得到隱蔽起來(lái)的內(nèi)幕和偽造指針去指向存儲(chǔ)器。更重要的是,Java編譯程序不處理存儲(chǔ)安排決策,所以程序員不能通過(guò)查看聲明去猜測(cè)類(lèi)的實(shí)際存儲(chǔ)安排。編譯的Java代碼中的存儲(chǔ)引用在運(yùn)行時(shí)由Java解釋程序決定實(shí)際存儲(chǔ)地址。
Java運(yùn)行系統(tǒng)使用字節(jié)碼驗(yàn)證過(guò)程來(lái)保證裝載到網(wǎng)絡(luò)上的代碼不違背任何Java語(yǔ)言限制。這個(gè)安全機(jī)制部分包括類(lèi)如何從網(wǎng)上裝載。例如,裝載的類(lèi)是放在分開(kāi)的名字空間而不是局部類(lèi),預(yù)防惡意的小應(yīng)用程序用它自己的版本來(lái)代替標(biāo)準(zhǔn)Java類(lèi)。
7.可移植性
Java使得語(yǔ)言聲明不依賴(lài)于實(shí)現(xiàn)的方面。例如,Java顯式說(shuō)明每個(gè)基本數(shù)據(jù)類(lèi)型的大小和它的運(yùn)算行為(這些數(shù)據(jù)類(lèi)型由Java語(yǔ)法描述)。
Java環(huán)境本身對(duì)新的硬件平臺(tái)和操作系統(tǒng)是可移植的。Java編譯程序也用Java編寫(xiě),而Java運(yùn)行系統(tǒng)用ANSIC語(yǔ)言編寫(xiě)。
8.高性能
Java是一種先編譯后解釋的語(yǔ)言,所以它不如全編譯性語(yǔ)言快。但是有些情況下性能是很要緊的,為了支持這些情況,Java設(shè)計(jì)者制作了“及時(shí)”編譯程序,它能在運(yùn)行時(shí)把Java字節(jié)碼翻譯成特定CPU(中央處理器)的機(jī)器代碼,也就是實(shí)現(xiàn)全編譯了。
Java字節(jié)碼格式設(shè)計(jì)時(shí)考慮到這些“及時(shí)”編譯程序的需要,所以生成機(jī)器代碼的過(guò)程相當(dāng)簡(jiǎn)單,它能產(chǎn)生相當(dāng)好的代碼。
9.多線程性
Java是多線程語(yǔ)言,它提供支持多線程的執(zhí)行(也稱(chēng)為輕便過(guò)程),能處理不同任務(wù),使具有線索的程序設(shè)計(jì)很容易。Java的lang包提供一個(gè)Thread類(lèi),它支持開(kāi)始線索、運(yùn)行線索、停止線索和檢查線索狀態(tài)的方法。
Java的線索支持也包括一組同步原語(yǔ)。這些原語(yǔ)是基于監(jiān)督程序和條件變量風(fēng)范,由C.A.R.Haore開(kāi)發(fā)的廣泛使用的同步化方案。用關(guān)鍵詞synchronized,程序員可以說(shuō)明某些方法在一個(gè)類(lèi)中不能并發(fā)地運(yùn)行。這些方法在監(jiān)督程序控制之下,確保變量維持在一個(gè)一致的狀態(tài)。
10.動(dòng)態(tài)性
Java語(yǔ)言設(shè)計(jì)成適應(yīng)于變化的環(huán)境,它是一個(gè)動(dòng)態(tài)的語(yǔ)言。例如,Java中的類(lèi)是根據(jù)需要載入的,甚至有些是通過(guò)網(wǎng)絡(luò)獲取的。[20]
工作原理
由四方面組成:
工作原理
(1)Java編程語(yǔ)言
(2)Java類(lèi)文件格式
(3)Java虛擬機(jī)
(4)Java應(yīng)用程序接口[21]
當(dāng)編輯并運(yùn)行一個(gè)Java程序時(shí),需要同時(shí)涉及到這四種方面。使用文字編輯軟件(例如記事本、寫(xiě)字板、UltraEdit等)或集成開(kāi)發(fā)環(huán)境(Eclipse、MyEclipse等)在Java源文件中定義不同的類(lèi)[22] ,通過(guò)調(diào)用類(lèi)(這些類(lèi)實(shí)現(xiàn)了Java API)中的方法來(lái)訪問(wèn)資源系統(tǒng),把源文件編譯生成一種二進(jìn)制中間碼,存儲(chǔ)在class文件中,然后再通過(guò)運(yùn)行與操作系統(tǒng)平臺(tái)環(huán)境相對(duì)應(yīng)的Java虛擬機(jī)來(lái)運(yùn)行class文件,執(zhí)行編譯產(chǎn)生的字節(jié)碼,調(diào)用class文件中實(shí)現(xiàn)的方法來(lái)滿足程序的Java API調(diào)用[6] 。
語(yǔ)言基礎(chǔ)
基本數(shù)據(jù)結(jié)構(gòu)
在Java中有8種數(shù)據(jù)類(lèi)型來(lái)存儲(chǔ)數(shù)值、字符和布爾值。
整數(shù)類(lèi)型
整數(shù)型用來(lái)存儲(chǔ)整數(shù)數(shù)值,即沒(méi)有小數(shù)部分的數(shù)值。可以是正數(shù),也可以是負(fù)數(shù)。整數(shù)數(shù)據(jù)在Java程序中有3種表示形式,分別為十進(jìn)制、八進(jìn)制和十六進(jìn)制。
整型數(shù)據(jù)根據(jù)它所占內(nèi)容大小的不同可分為4種類(lèi)型。
數(shù)據(jù)類(lèi)型 內(nèi)存
byte
8位
short
16位
int
32位
展開(kāi)全部
浮點(diǎn)類(lèi)型
數(shù)據(jù)類(lèi)型 內(nèi)存
float
32位
double
64位
字符類(lèi)型
字符類(lèi)型用于存儲(chǔ)單個(gè)字符,占用16位(兩個(gè)字節(jié))的內(nèi)存空間。在定義字符型變量時(shí),要以單引號(hào)表示。使用char關(guān)鍵字可定義字符變量。
數(shù)據(jù)類(lèi)型 內(nèi)存
char
16位
布爾類(lèi)型
布爾類(lèi)型又稱(chēng)邏輯類(lèi)型,通過(guò)關(guān)鍵字boolean來(lái)定義布爾類(lèi)型變量,只有只有true和false兩個(gè)取值,分別代表布爾邏輯中的“真”和“假”。布爾類(lèi)型通常被用在流程控制中作為判斷條件。
關(guān)鍵字
關(guān)鍵字 含義
abstract
抽象類(lèi)或方法
assert
用來(lái)查找內(nèi)部程序錯(cuò)誤
break
跳出一個(gè)switch或循環(huán)
展開(kāi)全部
關(guān)鍵字參考資料來(lái)源[23]
運(yùn)算符
運(yùn)算符是一些特殊的符號(hào),主要用于數(shù)學(xué)函數(shù)、一些類(lèi)型的賦值語(yǔ)句和邏輯比較方面。
賦值運(yùn)算符
賦值運(yùn)算符以符號(hào)“=”表示,它是一個(gè)二元運(yùn)算符(對(duì)兩個(gè)操作數(shù)作處理),其功能是將右方操作數(shù)所含的值賦給左方的操作數(shù)。
例如:
int a = 100;
算術(shù)運(yùn)算符
運(yùn)算符 說(shuō)明
+
加
-
減
*
乘
展開(kāi)全部
自增和自減運(yùn)算符
自增和自減是單目運(yùn)算符,可以放在操作元之前,也可以放在操作元之后。操作元必須是一個(gè)整型或浮點(diǎn)型變量。自增、自減運(yùn)算符的作用是使變量的值增1或減1。放在操作元前面的自增、自減運(yùn)算符,會(huì)先將變量的值加1或減1,然后再使該變量參與表達(dá)式的運(yùn)算。放在操作元后面的自增、自減運(yùn)算符,會(huì)先使變量參與表達(dá)式的運(yùn)算,然后再將該變量的值加1或減1。
例如:
假設(shè)a=5
b=++a;//先將a的值加1,然后賦值給b,此時(shí)a的值為6,b的值為6
b=a++;//先將a的值賦值給b,再將a的值變?yōu)?,此時(shí)a的值為6,b的值為5
比較運(yùn)算符
比較運(yùn)算符屬于二元運(yùn)算符,用于程序中的變量之間,變量和自變量之間以及其他類(lèi)型的信息之間的比較。比較運(yùn)算符的運(yùn)算結(jié)果是boolean型。當(dāng)運(yùn)算符對(duì)應(yīng)的關(guān)系成立時(shí),運(yùn)算的結(jié)果為true,否則為false。比較運(yùn)算符共有6個(gè),通常作為判斷的依據(jù)用于條件語(yǔ)句中。
運(yùn)算符 說(shuō)明
比較左方是否大于右方
比較左方是否小于右方
==
比較左方是否等于右方
展開(kāi)全部
邏輯運(yùn)算符
運(yùn)算符 作用
邏輯與
||
邏輯或
!
邏輯非
語(yǔ)言基礎(chǔ)參考資料來(lái)源[24]
程序舉例
/*一個(gè)簡(jiǎn)單的Java應(yīng)用程序,顯示內(nèi)容:Hello World!
文件名為Hello.java*/
class Hello{
//程序開(kāi)始于main()
public static void main(String args[]){
System.out.println("Hello World!");
}
}
main方法,正如注釋所說(shuō),這是程序開(kāi)始執(zhí)行的第一行。對(duì)于一個(gè)Java應(yīng)用程序來(lái)說(shuō),main方法是必需的,Java解釋器在沒(méi)有生成任何對(duì)象的情況下,以main作為入口來(lái)執(zhí)行程序。每個(gè)類(lèi)中可以定義多個(gè)方法,但main方法只能有一個(gè)。關(guān)鍵字public表示訪問(wèn)權(quán)限,指明所有的類(lèi)都可以使用這一方法。本例中,main必須被定義為public類(lèi)型,因?yàn)楫?dāng)程序開(kāi)始執(zhí)行時(shí)它需要被它的類(lèi)之外的代碼調(diào)用。關(guān)鍵字static指明該方法是一個(gè)類(lèi)方法。關(guān)鍵字void指明main()方法不返回任何值。main方法圓括號(hào)中定義的String args[]是傳送給main方法的參數(shù),參數(shù)名為args,它是類(lèi)String的一個(gè)對(duì)象。方法的參數(shù)用“類(lèi)名參數(shù)名”來(lái)指定,多個(gè)參數(shù)間用逗號(hào)分隔。該行的最后一個(gè)字符是“{”,它表示了main程序體的開(kāi)始,一個(gè)方法中包含的所有代碼都將包括在這對(duì)花括號(hào)中間。另外,main僅是解釋器開(kāi)始工作的地方,一個(gè)復(fù)雜的程序可能包含幾十個(gè)類(lèi),但這些類(lèi)僅需要一個(gè)main方法。[25]
語(yǔ)言標(biāo)準(zhǔn)
1997年11月17日,國(guó)際標(biāo)準(zhǔn)化組織(ISO)同意采納Sun公司的專(zhuān)利技術(shù)——Java作為ISO標(biāo)準(zhǔn)。JAVA作為一個(gè)技術(shù)標(biāo)準(zhǔn)供公眾無(wú)償使用。根據(jù)ISO的批準(zhǔn),Sun公司將可提交JAVA的標(biāo)準(zhǔn)化平臺(tái)規(guī)范。[26]
發(fā)布時(shí)間 名稱(chēng)
2000年11月15日
ISO/TS 10303-27:2000
2006年5月15日
ISO/IEC 19777-2:2006
2014年7月15日
ISO/IEC TR 13066-6:2014
展開(kāi)全部
語(yǔ)言標(biāo)準(zhǔn)參考資料[27] [28] [29] [30] [31]
語(yǔ)言規(guī)范
JCP(Java Community Process)是一個(gè)開(kāi)放的國(guó)際組織,主要由Java開(kāi)發(fā)者以及被授權(quán)者組成,職能是發(fā)展和更新Java技術(shù)規(guī)范、參考實(shí)現(xiàn)(RI)、技術(shù)兼容包(TCK)。
JCP維護(hù)的規(guī)范包括Java ME、Java SE、Java EE、XML、OSS、JAIN等。組織成員可以提交JSR(Java Specification Requests),通過(guò)特定程序以后,進(jìn)入到下一版本的規(guī)范里面。
JSR是早期提議和最終發(fā)布的Java平臺(tái)規(guī)范的具體描述。通常,一個(gè)新的JSR的提出是為了增加或者規(guī)范Java平臺(tái)的功能。某個(gè)具體的JSR由專(zhuān)家組共同來(lái)制定,工作由組長(zhǎng)協(xié)調(diào)。例如,CLDC1.0(Connected Limited Device Configuration,JSR30)由Sun公司的Antero Taivalsaari擔(dān)任組長(zhǎng),同時(shí)專(zhuān)家組的成員還包括Siemens、Motorola、Nokia、Symbian等。Java ME平臺(tái)規(guī)范是在JSR68中定義的,規(guī)范組長(zhǎng)是Sun公司的Jon Courtney。
JSR完成后,相關(guān)的規(guī)范及JavaAPI會(huì)在JCP的官方網(wǎng)站發(fā)布。設(shè)備制造商可以在自己的產(chǎn)品中實(shí)現(xiàn)某個(gè)JSR,如MIDP2.0(JSRll8)。但是這些都必須要通過(guò)TCK(Technology Compatibility Kit)測(cè)試以確保技術(shù)兼容性。[32]
按照技術(shù)類(lèi)別可以分成以下幾類(lèi):
1、J2EE平臺(tái)規(guī)范[33]
2、J2SE平臺(tái)規(guī)范[34]
3、J2ME平臺(tái)規(guī)范[35]
4、運(yùn)營(yíng)支持系統(tǒng)規(guī)范(OSS)[36]
5、綜合網(wǎng)絡(luò)的Java 應(yīng)用(JAIN)[37]
6、XML 操作規(guī)范[38]
技術(shù)應(yīng)用
1、Android應(yīng)用
許多的 Android應(yīng)用都是Java程序員開(kāi)發(fā)者開(kāi)發(fā)。雖然 Android運(yùn)用了不同的JVM以及不同的封裝方式,但是代碼還是用Java語(yǔ)言所編寫(xiě)。相當(dāng)一部分的手機(jī)中都支持JAVA游戲,這就使很多非編程人員都認(rèn)識(shí)了JAVA。
2、在金融業(yè)應(yīng)用的服務(wù)器程序
Java在金融服務(wù)業(yè)的應(yīng)用非常廣泛,很多第三方交易系統(tǒng)、銀行、金融機(jī)構(gòu)都選擇用Java開(kāi)發(fā),因?yàn)橄鄬?duì)而言,Java較安全[39] 。大型跨國(guó)投資銀行用Java來(lái)編寫(xiě)前臺(tái)和后臺(tái)的電子交易系統(tǒng),結(jié)算和確認(rèn)系統(tǒng),數(shù)據(jù)處理項(xiàng)目以及其他項(xiàng)目。大多數(shù)情況下,Java被用在服務(wù)器端開(kāi)發(fā),但多數(shù)沒(méi)有任何前端,它們通常是從一個(gè)服務(wù)器(上一級(jí))接收數(shù)據(jù),處理后發(fā)向另一個(gè)處理系統(tǒng)(下一級(jí)處理)。
3、網(wǎng)站
Java 在電子商務(wù)領(lǐng)域以及網(wǎng)站開(kāi)發(fā)領(lǐng)域占據(jù)了一定的席位。開(kāi)發(fā)人員可以運(yùn)用許多不同的框架來(lái)創(chuàng)建web項(xiàng)目,SpringMVC,Struts2.0以及frameworks。即使是簡(jiǎn)單的 servlet,jsp和以struts為基礎(chǔ)的網(wǎng)站在政府項(xiàng)目中也經(jīng)常被用到。例如醫(yī)療救護(hù)、保險(xiǎn)、教育、國(guó)防以及其他的不同部門(mén)網(wǎng)站都是以Java為基礎(chǔ)來(lái)開(kāi)發(fā)的。
4、嵌入式領(lǐng)域
Java在嵌入式領(lǐng)域發(fā)展空間很大。在這個(gè)平臺(tái)上,只需130KB就能夠使用Java技術(shù)(在智能卡或者傳感器上)。
5、大數(shù)據(jù)技術(shù)
Hadoop以及其他大數(shù)據(jù)處理技術(shù)很多都是用Java,例如Apache的基于Java的HBase和Accumulo以及 ElasticSearchas。
6、高頻交易的空間
Java平臺(tái)提高了這個(gè)平臺(tái)的特性和即使編譯,他同時(shí)也能夠像 C++ 一樣傳遞數(shù)據(jù)。正是由于這個(gè)原因,Java成為的程序員編寫(xiě)交易平臺(tái)的語(yǔ)言,因?yàn)殡m然性能不比C++,但開(kāi)發(fā)人員可以避開(kāi)安全性,可移植性和可維護(hù)性等問(wèn)題。
7、科學(xué)應(yīng)用
Java在科學(xué)應(yīng)用中是很好選擇,包括自然語(yǔ)言處理。最主要的原因是因?yàn)镴ava比C++或者其他語(yǔ)言相對(duì)其安全性、便攜性、可維護(hù)性以及其他高級(jí)語(yǔ)言的并發(fā)性更好。
Java語(yǔ)言好學(xué)難精,配置東西比較復(fù)雜
電話機(jī)器人java源碼的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于電話機(jī)器人java源碼是多少、電話機(jī)器人java源碼的信息別忘了在本站進(jìn)行查找喔。