新聞中心
簡(jiǎn)述JAVA的工作機(jī)制。為什么它能實(shí)現(xiàn)跨平臺(tái)?
java的跨平臺(tái)即跨操作系統(tǒng)的平臺(tái),也就是說你寫的java程序不需要修改就可以在不同的操作系統(tǒng)上運(yùn)行windows,linux,unix,當(dāng)然有個(gè)前提就是你的操作系統(tǒng)必須有java環(huán)境了,即安裝了對(duì)應(yīng)的jdk。應(yīng)為java程序編譯成class文件都交給JVM來處理了。

在java之前,跨平臺(tái)是很痛苦的事情,主要是因?yàn)樗袑?duì)于系統(tǒng)的調(diào)用,在不同的操作系統(tǒng)下結(jié)果都不一樣,簡(jiǎn)單的來說,int的長(zhǎng)度在不同操作系統(tǒng)里面就不一樣,甚至于連字節(jié)排列的順序都不同。調(diào)用同一個(gè)函數(shù)返回的格式也不同,因此,寫程序的人自己要對(duì)不同的系統(tǒng)非常了解,如果真的需要對(duì)不同操作系統(tǒng)進(jìn)行兼容,要在程序里面寫很多if,編譯的時(shí)候要先判斷使用的操作系統(tǒng),創(chuàng)造很多環(huán)境變量才能編譯,而且編譯好的二進(jìn)制可執(zhí)行文件只能在本系統(tǒng)上運(yùn)行。如果你寫的是個(gè)功能庫供別人調(diào)用的,那么光對(duì)操作系統(tǒng)的判斷就占了代碼的絕大部分,而且,還要你在不同平臺(tái)下進(jìn)行測(cè)試,這可是個(gè)艱苦卓絕的工作。
自從有了java之后,就把操作系統(tǒng)兼容的工作丟給了jvm了,對(duì)于程序員來說就再也不要關(guān)心int有幾位,還有高位在前還是地位在前的問題了,你只要用java的代碼把你程序的邏輯實(shí)現(xiàn)出來就可以了,這些兼容的問題就交給jvm去處理吧。這樣,如果你寫一個(gè)程序交付給客戶使用,如果客戶的環(huán)境是運(yùn)行AIX的,你就不需要在本地也裝一個(gè)AIX來開發(fā)和運(yùn)行,你可以在windows上完成所有的開發(fā),然后把編譯好的文件交給客戶就可以了,以后有別的客戶需要在Solaris上運(yùn)行這個(gè)程序,你都不用修改,直接拿過去就可以運(yùn)行,很方便!只有被跨平臺(tái)開發(fā)折磨過的人才能更深得體會(huì)到用java開發(fā)跨平臺(tái)應(yīng)用的優(yōu)勢(shì)。
因?yàn)閖ava程序是用java虛擬機(jī)(JVM)執(zhí)行的,不論是用什么平臺(tái)開發(fā)的java代碼,最終都會(huì)被轉(zhuǎn)換成只被JVM識(shí)別的代碼。 所以只要下載各個(gè)平臺(tái)的java虛擬機(jī)就可以實(shí)現(xiàn)代碼的跨平臺(tái)運(yùn)行。
java反射機(jī)制怎樣獲取到類上面的注解?
// 定義注解并指定java注解保留策略為運(yùn)行時(shí)RUNTIME,運(yùn)行時(shí)注入到JAVA字節(jié)碼文件里// 這樣才可以在運(yùn)行時(shí)反射并獲取它。@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)@interface MyAnnotation{ String key() default ""; int value() default 0; }// 使用注解@MyAnnotation(key="key1",value=200)class MyClass{}// 反射注解public static void main(String[] args){ MyClass myClass=new MyClass(); MyAnnotation annotation=myClass.getClass().getAnnotation(MyAnnotation.class)
; System.out.println("key="+annotation.key()+"\tvalue="+annotation.value());}
到此,以上就是小編對(duì)于java的機(jī)制的問題就介紹到這了,希望這2點(diǎn)解答對(duì)大家有用。
分享標(biāo)題:java有哪些機(jī)制
URL分享:http://m.5511xx.com/article/cogodsi.html


咨詢
建站咨詢
