Java Virtual Machine
C語言的開發模式, 是編寫.c的Source Code, 再經由Compiler編譯成Object Code。所謂Object Code指的是和硬體相關的機器指令, 也就是說當我們想要把C程式移植到不同的硬體時, 必須要重新Compile,以產生新的執行檔。除了需要重新編譯外,新系統是否具備應用程式所需的程式庫,include的檔案是否相容, 也是程式能否在新機器上順利編譯和執行的條件之一。
在實務上,為了讓C程式能在不同的UNIX版本上都能順利編譯,原作者往往必須使用前置處理器的#ifdef指令,判斷不同環境的適當寫法。如果想把在UNIX上開發的C程式移植到Windows上,則有用到專屬程式庫的部分(如UNIX的使用者介面可能用到X Window的API,Windows就沒有支援,必須一台一台灌程式庫才行,很可能還要花錢買),就必須重寫才行。
解決此類問題的方法之一,是定義一種Virtual Machine(虛擬機器),讓程式語言編譯時不要翻成實體機器的指令,而是翻成Virtual Machine的目的碼。Virtual Machine一般是以軟體來模擬的,只要新的平台有Virtual Machine,則原始程式不用Compile,執行舊機器上已有的Virtual Machine目的碼,就可以了。當然要達到完全不用重新Compile就能執行的理想,還要配合標準的程式庫才行。
Java語言基於上述理念,定義了Java Virtual Machine,它所用的指令稱為byte code。使用Virtual Machine的缺點之一,是執行的速度較慢,代價是開發的速度變快了。以現在的硬體來說,大部分應用程式的執行速度已經沒有那麼重要,反倒是軟體的開發速度和品質越來越值得重視。
此外JVM的技術不斷進步, 諸如Just In Time(JIT) Compiler, 或HotSpot等技術都可以讓Java程式以非常接近原生碼(Native Code)的速度執行。因此不要因為某些偏頗的報告或直覺, 就不使用Java了。
依市場需求主要區分為三個不同的種類,包括了 Java SE、 Java ME 與 Java EE。
• Java SE
對於想要學習 Java 程式開發的使用者而言,最先必須接觸的,也是必備的 Java 技術基礎是 Java SE,全名為 Java™ Java 標準版Standard Edition,也就是 Java 標準版,這一個主要是用於開發桌面應用程式,或是瀏覽器中內嵌的 Applet 程式,例如您可以基於 Java SE 開發一個文字編輯程式。
• Java ME
對於資源受限的消費性電子產品,例如手機, PDA , kios 和其他各式嵌入式系統,像 這類的設備不若電腦本身擁有豐富的資源(像強大的 CPU 與充足的記憶體) ,若要開發這類設備上的應用程式,可以 使用 Java ME 這個版本,全名為 Java™ Micro Edition,也就是 Java 微型版,現在非智慧型手機上若聲稱有支援 Java,多半是 由這個版本所開發出來的程式。
• Java EE
對於大型、 企業級網站而開發的應用程式 Java 提供了 Java EE 這個版本讓設計人員來進行開發,全名為 Java™ Enterprise Edition,也就是 Java 企業版,Java EE 以 Java SE 為基礎,在架構上與開發的規模上都比 Java SE 龐大許多,在所應用的技術上,比較為人所耳熟能詳的像是 JSF、Servlet、EJB、JAP 等。
java EE,Java平台企業版(Java Platform Enterprise Edition),是Sun公司為企業級應用推出的標準平台。 Java平台共分為三個主要版本Java EE、Java SE和Java ME。
Sun公司在1998年發表JDK1.2版本的時候,使用了新名稱Java 2 Platform,即“Java2平台”,修改後的JDK稱為Java 2 Platform Software Developing Kit,即J2SDK。並分為標準版(Standard Edition,J2SE),企業版(Enterprise Edition,J2EE),微型版(MicroEdition,J2ME)。 J2EE便由此誕生。
2005年6月,JavaOne大會召開,SUN公司公開Java SE 6。此時,Java的各種版本已經更名以取消其中的數字“2”:J2EE更名為Java EE, J2SE更名為Java SE,J2ME更名為Java ME。
隨著Java技術的發展,J2EE平台得到了迅速的發展,成為Java語言中最活躍的體系之一。現如今,J2EE不僅僅是指一種標準平台,它更多的表達著一種軟件架構和設計思想。
Leave a Reply