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