JavaScript ≠ Java

常常在網路上看到大家把 JavaScript 當成 Java 語言來看~

身為 Java軟體工程師的阿西摩,必須肩負起教育大家的責任,所以,今天要來宣導[JavaScript ≠ Java ],這兩個根本沒有相干的程式語言,只不過因為名稱上類似,就被人通通一概論之! 這是天大的錯誤啊!
先讓我們來看看 Wikipediea 上面怎麼說的

JavaScript並非Java
JavaScript是由網景通訊公司(Netscape)最初在它的Navigator 2.0產品上設計並實現的,原名LiveScript,除了句法上有一些相似之處以及都能夠提供網頁中的可執行內容以外,JavaScript和Java是完全不相干的。

JavaScript並不簡單
實際上儘管JavaScript是作為一種給非程式設計師提供的腳本語言而不是給程式設計師提供的程式語言來推廣和宣傳的,但是JavaScript是一門具有非常豐富特性的程式語言,和其他所有的語言一樣複雜或者更複雜,你需要對JavaScript有紮實的理解才能用JavaScript執行比較複雜的任務。

原文出處: Wikipedia – JavaScript

只所以阿西摩要大喊 JavaScript ≠ Java ,更重要的原因是 JavaScript 充其量不過是一種 Script language,中文翻譯為[腳本語言]

再來看看 Wikipedia 上怎麼說的

腳本語言(Script languages,scripting programming languages,scripting languages)是為了縮短傳統的編寫-編譯-連結-運行(edit-compile-link-run)過程而創建的電腦程式語言。此命名起源於一 個腳本「screenplay」,每次運行都會使對話框逐字重複。早期的腳本語言經常被稱為批處理語言或工作控制語言。一個腳本通常是解釋運行而非編譯。

雖然許多腳本語言都超越了電腦簡單任務自動化的領域,成熟到可以編寫精巧的程序,但仍然還是被稱為腳本。幾乎所有電腦系統的各個層次都有一種腳本語 言。包括作業系統層,如電腦遊戲,網路應用程序,字處理文檔,網路軟體等。在許多方面,高級程式語言和腳本語言之間互相交叉,二者之間沒有明確的界限。

一個腳本可以使得本來要用鍵盤進行的相互式操作自動化。一個Shell腳本主要由原本需要在命令行輸入的命令組成,或在一個文本編輯器中,用戶可以 使用腳本來把一些常用的操作組合成一組序列。主要用來書寫這種腳本的語言叫做腳本語言。很多腳本語言實際上已經超過簡單的用戶命令序列的指令,還可以編寫 更複雜的程序。

原文出處 – Wikipedia – Script Language

而 Java 呢?

Java,是一種可以編寫跨平臺應用軟體物件導向程式設計語言,由升陽(太陽微電子,Sun Microsystems)公司的詹姆斯·高斯林(James Gosling)等人於1990年代初開發。它最初被命名為Oak,作為一種小家用電器程式設計語言,用於解決諸如電視機電話鬧鐘烤麵包機等家用電器的控制和通訊問題。由於這些智慧型家電的市場需求沒有預期的高,Sun放棄了該項計劃。就在Oak幾近失敗之時,隨著Internet的發展,Sun看到了Oak在電腦網路上的廣闊應用前景,於是改造了Oak,在1995年5月以“Java”的名稱正式發佈了。Java伴隨著Internet的迅猛發展而發展,逐漸成為重要的Internet程式設計語言。

Java 屬於工業編程語言

程式設計語言,通常簡稱為編程語言,是一組用來定義電腦程式的語法規則。它是一種被標準化的交流技巧,用來向電腦發出指令。一種電腦語言讓程式設計師能夠準確地定義電腦所需要使用的數據,並精確地定義在不同情況下所應當採取的行動。

程式設計語言原本是被設計成專門使用在電腦上的,但它們也可以用來定義演算法或者資料結構。正是因為如此,程式設計師才會試圖使程式代碼更容易閱讀。

原文出處 – Wikipedia – Programming Language

看了這麼一堆專業的東西,相信大家一定都頭暈了。好吧,阿西摩現在就用自己的解釋來說 JavaScript ≠ Java

  1. JavaScript 只要有一個網頁跟有支援 JavaScript 的瀏覽器才可以執行。而 Java 語言呢,只要程式內沒有使用什麼特殊平台的 library,經過轉譯後的 class 檔,幾乎可以放到任何已經安裝有 Java Runtime 環境的系統上。比方說,我在我的 Windows 上開發轉譯後的 Java 程式,可以放到 UNIX, Linux, OSX 上執行,都不會有太大的問題。
  2. 最原始的 JavaScript 能操作跟執行的範圍相當有限,比方說,你如果要讀取本機端的檔案,比就必須搭配 JavaScript extension 還有 ActiveX 之類的附註程式才有可能達稱。而 Java 可以輕鬆的使用 Java 原本的 package 去讀取檔案,更改檔案。
  3. JavaScript 當年是 Netscpae 開發出來用在 Netscape 上,讓原本死板板的 HTML 網頁可以又動態的變化,互動,還有驗證輸入等等的功能。而 Microsoft 呢,運用他們最厲害的 Reverse Engineering 把 JavaScript 學了起來,然後自創了 JScript. 而比起 JavaScript,Java語言,有自己的標準,架構,平台,而且複雜度高上太多太多了,所能應用的範圍更是會把 JavaScript 巴到連渣都不剩!
  4. JavaScript 是一種非常不嚴謹的腳本語言。在 JavaScript 裡面,變數全部都用 var 宣告,如果你這樣在 Java 裡面寫程式,我跟你保證,Java compiler 會不斷的,一直的給你[舉紅牌]!
  5. 我可以用 Java 語言,在 Java Server Page (JSP)上動態產生 JavaScript 語言,並且執行,而你想要用 JavaScript 去寫 Java語言!? 嗯,還是不要沒事找自己麻煩的好!
  6. 總之,JavaScript ≠ Java 你是要我說多少次才會聽懂啦!

說了這麼多,現在來讓你看看兩者不一樣的地方。

JavaScript 的程式

把這一段 code 貼到 text editor 上,然後 save 成一個 jsDemo.html 檔案,就可以直接用瀏覽器開啟,並且看到跳出來的訊息。這就是最簡單的 JavaScript 程式。

Java 程式

public class HelloWorld {
public static void main (String[] args) {

        System.out.println("Hello, world!\n");
    }
}

而 Java 這程式就必須先貼到 text editor 然後存檔成 HelloWorld.java 然後在用 Java compiler 轉譯成 HelloWorld.class 才能執行。

說了這一大堆,無非就是想要說明 JavaScript ≠ Java 所以,大家別再犯這種錯誤了,以後要看明白,分清楚

JavaScript ≠ Java

懂了嗎!? 不要再把 JavaScript 當成 Java 來看了。說真的,每次看到人家犯這種誤解,真的讓阿西摩感覺到我的專業被人家當成垃圾看待。因為 Java 背後的專業性,應用範圍,絕對不是 JavaScript 那種 SCRIPT 語言可以比較的!

13 Comments

  1. 道格老師 – Perl Lover:
    1. 我本文當中本來就沒有批評的 scripting language的用意。

    2. 我只是單純的對 JavaScript 做出一些我的看法。文中,也根本沒有把 Perl 拿來做比較。我比較好奇「老師」的您,那裡看到我說 Perl 了?況且,我還挺喜歡 python, perl 之類的語言,都可以拿來作為系統間的 glue,都是很不錯的語言。

  2. 黑米上「觀魚」留了個朋友跟他說的至理名言:
    你不寫(報導),別人不知道你不知道。
    你一寫(報導),全天下都知道你不知道。

    我想再加一句:
    跟著無知的人繼續寫下去,那還真的不知道是不是有「無知」以外的形容詞了。

    獻給全天下跟阿西摩一樣無知的人。
    共勉之。

  3. 剛剛把 firebug 裝起來玩玩看…

    跑出了這樣的東西…

    警告: 使用了非標準的 document.all 語法。請改用 W3C 標準的 document.getElementById()。
    原始檔: http://xxx.xxx.xxx.xxx:8080/xxx/js/CommonJS.js
    行: 212

    結果,一進去看,是之前找來的 component 上的function.

    而且,firebug 是 firefox 的 plug-in 必須使用在 firefox上。我手邊現在這個專案,板型當初是套用在 IE 上的,排版上會有一些些異狀。

    真是令人苦惱。。。

    而且,它會沒一直掃描共用的 js 檔案。就算頁面上沒有 call 到這個 function  它還是會檢查,而且訊息一直跳出來。
    大概我不會用吧~ 我再繼續看看好了。

  4. to hoamon:
    感謝大師指點,我會虛心學習。

  5. JavaScript ≠ Java我終於懂了,版上各文章精彩極了,可惜我是程式門外漢,只會欣賞別人的程式而自己不會寫
    請教先進,在 http://sga.myweb.hinet.net/sgajava.htm 爪哇教室/雜七雜八/網頁記事–範例中,如何把記事的順序調過來–即後來的記事顯示在網頁上方,而先填入的記事顯示在網頁下面,謝謝

  6. JavaScript 是一種非常不嚴謹的腳本語言。在 JavaScript 裡面,變數全部都用 var 宣告

    var宣告 不是代表語言不嚴謹
    只是代表語言支不支援type inference.

  7. 其實只要你能寫出 一個語言在某個平台的compiler或interpreter 你就能在用那個平台上就某個語言寫程式
    像rhino 就是讓你在JVM上跑Javascript的東西

  8. @BEN
    JavaScript 裡面也有分不同的 type ,只是用 var 的時候會自動轉變。
    如 “100” === 100 會返回 false 。

  9. 是咁的……JavaScript ≠ Java 這個ISSUE 以前見工有人問到, 剛好細佬 DANNY 也知道! 所以嘗試上網 FIND THE SOLUTION, 來到這WEBSITES! THX~

  10. 您好,搜索java和javascript不同时找到了这篇文档,文中关于“JavaScript 的程式”的演示没有被正常显示,应该是这段script语句被浏览器执行了。

Leave a Reply

Your email address will not be published.

*