濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 電話機(jī)器人java源碼(電話機(jī)器人java源碼是多少)

電話機(jī)器人java源碼(電話機(jī)器人java源碼是多少)

熱門(mén)標(biāo)簽:正規(guī)電銷(xiāo)機(jī)器人報(bào)價(jià) 新思維智能電話機(jī)器人 硅基智能電話機(jī)器人官網(wǎng) 遂寧電銷(xiāo) 惠州外呼系統(tǒng)公司 深圳人工外呼系統(tǒng)公司 焦作外呼防封系統(tǒng)多少錢(qián) 地圖標(biāo)注黑名單 揚(yáng)州辦理400電話

本篇文章給大家談?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)行查找喔。

標(biāo)簽:撫州 邵陽(yáng) 辛集 那曲 銅陵 貴陽(yáng) 雞西 東營(yíng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《電話機(jī)器人java源碼(電話機(jī)器人java源碼是多少)》,本文關(guān)鍵詞  電話機(jī)器人java源碼,電銷(xiāo)機(jī)器人,電話機(jī)器人,智能;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《電話機(jī)器人java源碼(電話機(jī)器人java源碼是多少)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于電話機(jī)器人java源碼(電話機(jī)器人java源碼是多少)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    新巴尔虎左旗| 江永县| 长宁县| 烟台市| 屏南县| 广昌县| 芦山县| 宜昌市| 文登市| 莲花县| 当雄县| 安义县| 台南县| 南雄市| 温泉县| 宝兴县| 湘西| 溧水县| 铅山县| 大竹县| 临潭县| 宿州市| 大田县| 海阳市| 龙泉市| 九江市| 南漳县| 建湖县| 新巴尔虎右旗| 兴安盟| 隆林| 迭部县| 原阳县| 朔州市| 景泰县| 安多县| 宜黄县| 荔波县| 屯留县| 漳州市| 海丰县|