Java是什么意思?詳解Java的優(yōu)缺點(diǎn)、編程工具、框架及應(yīng)用
一、Java是什么意思
Java是一門面向?qū)ο蟮木幊陶Z言,不僅吸收了C++語言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強(qiáng)大和簡單易用兩個特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實(shí)現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。
Java具有簡單性、面向?qū)ο蟆⒎植际健⒔研?、安全性、平臺獨(dú)立與可移植性、多線程、動態(tài)性等特點(diǎn)。Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。
二、Java的工作原理
Java虛擬機(jī)是編譯和運(yùn)行Java程序等的各種命令及其運(yùn)行環(huán)境的總稱。Java源程序在編譯之后生成后綴為".class"的文件,該文件以字節(jié)碼(bytecode)的方式進(jìn)行編碼。這種字節(jié)碼實(shí)際上是一種偽代碼,它包含各種指令,這些指令基本上是與平臺無關(guān)的指令。Java虛擬機(jī)在字節(jié)碼文件(及編譯生成的后綴為.class的文件)的基礎(chǔ)上解釋這些字節(jié)碼,及將這些字節(jié)碼轉(zhuǎn)行成為本地計算機(jī)的機(jī)器代碼,并交給本地計算機(jī)執(zhí)行。
Java由四方面組成:
(1)Java編程語言;
(2)Java類文件格式;
(3)Java虛擬機(jī);
(4)Java應(yīng)用程序接口。
當(dāng)編輯并運(yùn)行一個Java程序時,需要同時涉及到這四種方面。使用文字編輯軟件(例如記事本、寫字板、UltraEdit等)或集成開發(fā)環(huán)境(Eclipse、MyEclipse等)在Java源文件中定義不同的類,通過調(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)用。
三、Java語言規(guī)范
JCP(Java Community Process)是一個開放的國際組織,主要由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ī)范的具體描述。通常,一個新的JSR的提出是為了增加或者規(guī)范Java平臺的功能。某個具體的JSR由專家組共同來制定,工作由組長協(xié)調(diào)。例如,CLDC1.0(Connected Limited Device Configuration,JSR30)由Sun公司的Antero Taivalsaari擔(dān)任組長,同時專家組的成員還包括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)某個JSR,如MIDP2.0(JSRll8)。但是這些都必須要通過TCK(Technology Compatibility Kit)測試以確保技術(shù)兼容性。
按照技術(shù)類別可以分成以下幾類:
1、J2EE平臺規(guī)范;
2、J2SE平臺規(guī)范;
3、J2ME平臺規(guī)范;
4、運(yùn)營支持系統(tǒng)規(guī)范(OSS);
5、綜合網(wǎng)絡(luò)的Java 應(yīng)用(JAIN);
6、XML 操作規(guī)范。
四、Java的優(yōu)點(diǎn)
Java 語言是一種分布式的面向?qū)ο笳Z言,具有面向?qū)ο?、平臺無關(guān)性、簡單性、解釋執(zhí)行、多線程、安全性等很多優(yōu)點(diǎn),下面針對這些優(yōu)點(diǎn)進(jìn)行逐一介紹。
1、面向?qū)ο?/strong>
Java 是一種面向?qū)ο蟮恼Z言,它對對象中的類、對象、繼承、封裝、多態(tài)、接口、包等均有很好的支持。為了簡單起見,Java 只支持類之間的單繼承,但是可以使用接口來實(shí)現(xiàn)多繼承。使用 Java 語言開發(fā)程序,需要采用面向?qū)ο蟮乃枷朐O(shè)計程序和編寫代碼。
2、平臺無關(guān)性
平臺無關(guān)性的具體表現(xiàn)在于,Java 是"一次編寫,到處運(yùn)行(Write Once,Run any Where)"的語言,因此采用 Java 語言編寫的程序具有很好的可移植性,而保證這一點(diǎn)的正是 Java 的虛擬機(jī)機(jī)制。在引入虛擬機(jī)之后,Java 語言在不同的平臺上運(yùn)行不需要重新編譯。
Java 語言使用 Java 虛擬機(jī)機(jī)制屏蔽了具體平臺的相關(guān)信息,使得 Java 語言編譯的程序只需生成虛擬機(jī)上的目標(biāo)代碼,就可以在多種平臺上不加修改地運(yùn)行。
3、簡單性
Java 語言的語法與 C 語言和 C++ 語言很相近,使得很多程序員學(xué)起來很容易。對 Java 來說,它舍棄了很多 C++ 中難以理解的特性,如操作符的重載和多繼承等,而且 Java 語言不使用指針,加入了垃圾回收機(jī)制,解決了程序員需要管理內(nèi)存的問題,使編程變得更加簡單。
4、解釋執(zhí)行
Java 程序在 Java 平臺運(yùn)行時會被編譯成字節(jié)碼文件,然后可以在有 Java 環(huán)境的操作系統(tǒng)上運(yùn)行。在運(yùn)行文件時,Java 的解釋器對這些字節(jié)碼進(jìn)行解釋執(zhí)行,執(zhí)行過程中需要加入的類在連接階段被載入到運(yùn)行環(huán)境中。
5、多線程
Java 語言是多線程的,這也是 Java 語言的一大特性,它必須由 Thread 類和它的子類來創(chuàng)建。Java 支持多個線程同時執(zhí)行,并提供多線程之間的同步機(jī)制。任何一個線程都有自己的 run() 方法,要執(zhí)行的方法就寫在 run() 方法體內(nèi)。
6、分布式
Java 語言支持 Internet 應(yīng)用的開發(fā),在 Java 的基本應(yīng)用編程接口中就有一個網(wǎng)絡(luò)應(yīng)用編程接口,它提供了網(wǎng)絡(luò)應(yīng)用編程的類庫,包括 URL、URLConnection、Socket 等。Java 的 RIM 機(jī)制也是開發(fā)分布式應(yīng)用的重要手段。
7、健壯性
Java 的強(qiáng)類型機(jī)制、異常處理、垃圾回收機(jī)制等都是 Java 健壯性的重要保證。對指針的丟棄是 Java 的一大進(jìn)步。另外,Java 的異常機(jī)制也是健壯性的一大體現(xiàn)。
8、高性能
Java 的高性能主要是相對其他高級腳本語言來說的,隨著 JIT(Just in Time)的發(fā)展,Java 的運(yùn)行速度也越來越高。
9、安全性
Java 通常被用在網(wǎng)絡(luò)環(huán)境中,為此,Java 提供了一個安全機(jī)制以防止惡意代碼的攻擊。除了 Java 語言具有許多的安全特性以外,Java 還對通過網(wǎng)絡(luò)下載的類增加一個安全防范機(jī)制,分配不同的名字空間以防替代本地的同名類,并包含安全管理機(jī)制。
五、Java的缺點(diǎn)
1、Java的運(yùn)行速度相對較慢因?yàn)镴ava是靠虛擬機(jī)運(yùn)行,所以相對于其他語言(匯編,C,C++)編寫的程序慢,因?yàn)樗皇侵苯訄?zhí)行機(jī)器碼。
2、因?yàn)镴ava是跨平臺的,所以不能和底層打交道。Java使用虛擬機(jī)來實(shí)現(xiàn),不能接近操作系統(tǒng),也就不能和操作系統(tǒng)的底層打交道了。
3、不夠靈活因?yàn)镴ava刪除了指針,所以不如C/C++等語言靈活。
4、Java編程非常復(fù)雜,提出架構(gòu)代碼的過程效率低下。一旦字節(jié)碼被編譯,Java 虛擬機(jī)解釋器程序必須運(yùn)行代碼。
5、付費(fèi)商業(yè)許可:從 2019 年開始,您將需要為 Java 標(biāo)準(zhǔn)版 8 支付商業(yè)、商業(yè)和生產(chǎn)許可。對于想要升級其服務(wù)的公司來說,這將是一筆增加的費(fèi)用。
6、Java 因?yàn)楣δ軓?qiáng)大,在一些記憶體處理、資源清理的部分并沒有做的比 C、C++ 來的好,所以相較之下執(zhí)行速度緩慢。
六、Java編程開發(fā)
1、編程環(huán)境
JDK(Java Development Kit)稱為Java開發(fā)包或Java開發(fā)工具,是一個編寫Java的Applet小程序和應(yīng)用程序的程序開發(fā)環(huán)境。JDK是整個Java的核心,包括了Java運(yùn)行環(huán)境(Java Runtime Environment),一些Java工具和Java的核心類庫(Java API)。不論什么Java應(yīng)用服務(wù)器實(shí)質(zhì)都是內(nèi)置了某個版本的JDK。主流的JDK是Sun公司發(fā)布的JDK,除了Sun之外,還有很多公司和組織都開發(fā)了自己的JDK,例如,IBM公司開發(fā)的JDK,BEA公司的Jrocket,還有GNU組織開發(fā)的JDK 。
另外,可以把Java API類庫中的Java SE API子集和Java虛擬機(jī)這兩部分統(tǒng)稱為JRE(JAVA Runtime Environment),JRE是支持Java程序運(yùn)行的標(biāo)準(zhǔn)環(huán)境。
JRE是個運(yùn)行環(huán)境,JDK是個開發(fā)環(huán)境。因此寫Java程序的時候需要JDK,而運(yùn)行Java程序的時候就需要JRE。而JDK里面已經(jīng)包含了JRE,因此只要安裝了JDK,就可以編輯Java程序,也可以正常運(yùn)行Java程序。但由于JDK包含了許多與運(yùn)行無關(guān)的內(nèi)容,占用的空間較大,因此運(yùn)行普通的Java程序無須安裝JDK,而只需要安裝JRE即可。
2、編程工具
Eclipse:一個開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺。
NetBeans:開放源碼的Java集成開發(fā)環(huán)境,適用于各種客戶機(jī)和Web應(yīng)用。
IntelliJ IDEA:在代碼自動提示、代碼分析等方面的具有很好的功能。
MyEclipse:由Genuitec公司開發(fā)的一款商業(yè)化軟件,是應(yīng)用比較廣泛的Java應(yīng)用程序集成開發(fā)環(huán)境。
EditPlus:如果正確配置Java的編譯器"Javac"以及解釋器"Java"后,可直接使用EditPlus編譯執(zhí)行Java程序。
七、常用Java框架
1、Hibernate框架
Hibernate,它是一個開放源代碼的對象關(guān)系映射框架,全稱為Object-Relative Database-Mapping。hibernate可以自動生成SQL語句,自動執(zhí)行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。
Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。我的感受是,使用Hibernate比JDBC方式減少了80%的編程量。
2、Struts2框架
Struts2以WebWork優(yōu)秀的設(shè)計思想為核心,吸收了Struts框架的部分優(yōu)點(diǎn),提供了一個更加整潔的MVC設(shè)計模式實(shí)現(xiàn)的Web應(yīng)用程序框架Struts2以WebWork優(yōu)秀的設(shè)計思想為核心,吸收了Struts框架的部分優(yōu)點(diǎn),提供了一個更加整潔的MVC設(shè)計模式實(shí)現(xiàn)的Web應(yīng)用程序框架。Struts2引入了幾個新的框架特性:從邏輯中分離出橫切關(guān)注點(diǎn)的攔截器、減少或者消除配置文件、貫穿整個框架的強(qiáng)大表達(dá)式語言、支持可變更和可重用的基于MVC模式的標(biāo)簽API,Struts2充分利用了從其它MVC框架學(xué)到的經(jīng)驗(yàn)和教訓(xùn),使得Struts2框架更加清晰靈活。
3、MyBatis框架
MyBatis本是apache的一個開源項(xiàng)目iBatis,2010年這個項(xiàng)目由apache software foundation 遷移到了google code,并且改名為MyBatis。2013年11月遷移到Github。iBATIS一詞來源于"internet"和"abatis"的組合,是一個基于Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAOs)。
4、Spring框架
調(diào)用者依賴被調(diào)用者,它們之間形成了強(qiáng)耦合,如果我想在其他地方復(fù)用某個類,則這個類依賴的其他類也需要包含。程序就變得很混亂,每個類互相依賴互相調(diào)用,復(fù)用度極低。如果一個類做了修改,則依賴它的很多類都會受到牽連。為此,出現(xiàn)Spring框架。Spring的作用就是完全解耦類之間的依賴關(guān)系,一個類如果要依賴什么,那就是一個接口。至于如何實(shí)現(xiàn)這個接口,這都不重要了。只要拿到一個實(shí)現(xiàn)了這個接口的類,就可以輕松的通過xml配置文件把實(shí)現(xiàn)類注射到調(diào)用接口的那個類里。所有類之間的這種依賴關(guān)系就完全通過配置文件的方式替代了。所以Spring框架最核心的就是所謂的依賴注射和控制反轉(zhuǎn)。
5、Vue.js框架
嚴(yán)格來說這個應(yīng)該不屬于框架,從組建構(gòu)造上來講是和reactjs類似的構(gòu)造UI組件的。從整體邏輯來講,他要解決的是MVVM的VM這個部分,就是如何把應(yīng)用程序的model和view聯(lián)系起來的這個VM(view model)部分。眾所周知,MVC這個design pattern爭議大的就是這個C的部分,所以才有各種MV*的方案提出。他使用起來確實(shí)比reactjs簡單方便多了。代碼也清晰。借鑒了angularjs的declarative的特點(diǎn)。另外文檔,例子做的都很漂亮。上手比較快,這些都是很好的優(yōu)點(diǎn)。
6、springboot框架
springboot框架,被稱作一棧式解決方案。比較輕量,也是當(dāng)前微服務(wù)下的趨勢;springboot本身就是構(gòu)建與spring之上,各種思想和特性無需多說,去掉了spring繁瑣的配置,簡化了原有spring開發(fā)的流程,提供了各種實(shí)用的特性如metric,actuctor等等;最重要的是springboot附帶了整個springcloud生態(tài)。兩個框架對你解決大,中,小項(xiàng)目都沒任何問題。
7、spring MVC框架
Spring MVC屬于SpringFrameWork的后續(xù)產(chǎn)品,已經(jīng)融合在Spring Web Flow里面。Spring框架提供了構(gòu)建Web應(yīng)用程序的全功能MVC模塊。使用Spring可插入的MVC架構(gòu),從而在使用Spring進(jìn)行Web開發(fā)時,可以選擇使用Spring的SprinGMVC框架或集成其他MVC開發(fā)框架,如Struts1,Struts2等。它是一個典型的教科書式的mvc構(gòu)架,而不像struts等都是變種或者不是完全基于mvc系統(tǒng)的框架,對于初學(xué)者或者想了解mvc的人來說我覺得spring是最好的,它的實(shí)現(xiàn)就是教科書!第二它和tapestry一樣是一個純正的servlet系統(tǒng),這也是它和tapestry相比struts所具有的優(yōu)勢。而且框架本身有代碼,看起來容易理解。Data Access Objects(DAOs)。
八、Java技術(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較安全。大型跨國投資銀行用Java來編寫前臺和后臺的電子交易系統(tǒng),結(jié)算和確認(rèn)系統(tǒng),數(shù)據(jù)處理項(xiàng)目以及其他項(xiàng)目。大多數(shù)情況下,Java被用在服務(wù)器端開發(fā),但多數(shù)沒有任何前端,它們通常是從一個服務(wù)器(上一級)接收數(shù)據(jù),處理后發(fā)向另一個處理系統(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ù)、保險、教育、國防以及其他的不同部門網(wǎng)站都是以Java為基礎(chǔ)來開發(fā)的。
4、嵌入式領(lǐng)域
Java在嵌入式領(lǐng)域發(fā)展空間很大。在這個平臺上,只需130KB就能夠使用Java技術(shù)(在智能卡或者傳感器上)。
5、大數(shù)據(jù)技術(shù)
Hadoop以及其他大數(shù)據(jù)處理技術(shù)很多都是用Java,例如Apache的基于Java的HBase和Accumulo以及 ElasticSearchas。
6、高頻交易的空間
Java平臺提高了這個平臺的特性和及時編譯,他同時也能夠像 C++ 一樣傳遞數(shù)據(jù)。正是由于這個原因,Java成為的程序員編寫交易平臺的語言,因?yàn)殡m然性能不比C++,但開發(fā)人員可以避開安全性,可移植性和可維護(hù)性等問題。
7、科學(xué)應(yīng)用
Java在科學(xué)應(yīng)用中是很好選擇,包括自然語言處理。最主要的原因是因?yàn)镴ava比C++或者其他語言相對其安全性、便攜性、可維護(hù)性以及其他高級語言的并發(fā)性更好。
最后總結(jié)
優(yōu)化猩SEO:Java 語言對對象的支持和強(qiáng)大的 API 使得編程工作變得更加容易和快捷,大大降低了程序的開發(fā)成本。Java編程技術(shù)目前在經(jīng)濟(jì)、金融、科研、工業(yè)、電子等行業(yè)中也有著廣泛的應(yīng)用。
參考鏈接:
Java_百度百科
https://baike.baidu.com/item/Java/85979
Java是什么?Java的特點(diǎn)有哪些?
http://c.biancheng.net/view/1282.html
java框架都有哪些_持久層框架有哪些-CSDN博客
https://blog.csdn.net/zihong521/article/details/123137440
修改于2023-09-11
想了解更多建站百科的內(nèi)容,請?jiān)L問:建站百科