Java
!! FTC指出,甲骨文早在2011年的內部文件中便顯示其知悉「Java產品更新機制不夠積極或根本無效」,導致大量針對舊版Java SE的攻擊發生。
Java威脅主要來自惡意網站的惡意Java程式。如果你是因為應用程式需要而安裝Java,那你可以在瀏覽器禁用Java而不會受到影響。
過去你如果需要這樣做的話,需要一個一個瀏覽器分別設定,但現在不同了。目前的Java版本可以透過Java控制面板來做到這一點。可以在這裡找到如何進行的說明。網頁上的Java程式將無法執行,但Java應用程式可以繼續使用,沒有問題。
基於這個問題,使用者必須考慮自己是否真的需要Java。如果不的話,就應該將其移除。對於無法避免使用Java的使用者而言,還有其他的方法來降低風險:
https://blog.trendmicro.com.tw/?p=3910
Java 是一種廣泛使用的電腦程式設計語言,擁有跨平台、物件導向、泛型程式設計的特性,廣泛應用於企業級 Web 應用開發和行動應用開發。
泛型程式設計是程式設計語言的一種風格或範式。泛型允許程式設計師在強型別程式設計語言中編寫代碼時使用一些以後才指定的類型。
(Generic programming is a style of computer programming in which algorithms are written in terms of types to-be-specified-later that are then instantiated when needed for specific types provided as parameters.)
(通用編程是一種計算機編程的風格,其中根據要指定的類型編寫算法,然後在需要時為特定類型提供參數進行實例化。)
各種程式設計語言和其編譯器、執行環境對泛型的支援均不一樣。Ada、Delphi、Eiffel、Java、C#、F#、Swift 和 Visual Basic .NET 稱之為泛型(generics);ML、Scala 和 Haskell 稱之為參數多型(parametric polymorphism);C++ 和 D 稱之為模板。具有廣泛影響的1994年版的《Design Patterns》一書稱之為參數化類型(parameterized type)。
泛型的定義主要有以下兩種:
1. 在程式編碼中一些包含類型參數的類型,也就是說泛型的參數只可以代表類别,不能代表個別物件。(這是當今較常見的定義)
2. 在程式編碼中一些包含參數的類別。其參數可以代表類別或物件等等。(現在人們大多把這稱作模板)
不論使用那個定義,泛型的參數在真正使用泛型時都必須作出指明。
在電腦科學以及程式設計中,經常把程式語言的型別系統分為強型別(英語:strongly typed)和弱型別(英語:weakly typed (loosely typed))兩種。這兩個術語並沒有非常明確的定義,但主要用以描述程式語言對於混入不同資料型別的值進行運算時的處理方式。強型別的語言遇到函式引數型別和實際叫用型別不符合的情況經常會直接出錯或者編譯失敗;而弱型別的語言常常會實行隱式轉換,或者產生難以意料的結果。這對術語在短短的電腦歷史中,早已含括了更多的意義,而且時常很難知道寫的人究竟要表達哪個意思。
程式語言專家 Benjamin C. Pierce,《Types and Programming Languages》和《Advanced Topics in Types and Programming Languages》的作者,曾說:
「我花了幾個星期…試著弄清楚「強型別」、「靜態型別」、「安全」等術語,但我發現這異常的困難…這些術語的用法不盡相同,所以也就近乎無用。」
Java 程式語言的風格十分接近 C++ 語言。繼承了 C++ 語言物件導向技術的核心,Java 捨棄了 C++ 語言中容易引起錯誤的指標,改以參照取代,同時移除原 C++ 與原來運算子多載,也移除多重繼承特性,改用介面取代,增加垃圾回收器功能。在 Java SE 1.5 版本中引入了泛型程式設計、類型安全的列舉、不定長參數和自動裝/拆箱特性。昇陽電腦對 Java語言 的解釋是:「Java 程式語言是個簡單、物件導向、分散式、解釋性、健壯、安全與系統無關、可移植、高效能、多執行緒和動態的語言。」
Java 不同於一般的編譯語言或直譯語言。它首先將原始碼編譯成 Bytecode,然後依賴各種不同平台上的虛擬機器來解釋執行 Bytecode,從而實現了「一次編寫,到處執行」的跨平台特性。在早期 JVM 中,這在一定程度上降低了 Java 程式的執行效率。但在 J2SE1.4.2 釋出後,Java 的執行速度有了大幅提升。
目前在全球資訊網的伺服器端和手持裝置上,Java相當流行,很多網站在後端使用 JSP 和其他 Java 技術,Android 大部分的程式碼採用 Java 語言編程。
為什麼大型網站前端使用 PHP,後台邏輯用 Java:https://read01.com/Le66BM.html
Java 的體系分為 Java SE、Java EE 和 Java ME(JDK 5.0以前分別稱為 J2SE、J2EE 和 J2ME),Java 的敲門磚是 Java SE,也就是入門學習的內容,不論日後是選擇哪個體系領域作為發展方向,都得從 Java SE 起步。
Java 入門指引:https://read01.com/e5OEyP.html
編寫Java程式應注意以下幾點:
● 大小寫敏感:Java 是大小寫敏感的,這就意味著識別元 Hello 與 hello 是不同的。
● 類名:對於所有的類來說,類名的首字母應該大寫。如果類名由若干單詞組成,那麼每個單詞的首字母應該大寫,例如 MyFirstJavaClass。
● 方法名:所有的方法名都應該以小寫字母開頭。如果方法名含有若干單詞,則後面的每個單詞首字母大寫,例如 myFirstJavaMethod。
● 原始檔名:原始檔名必須和類名相同。當儲存檔案的時候,你應該使用類名作為檔案名儲存(切記 Java 是大小寫敏感的),檔案名的字尾為 .java。(如果檔案名和類名不相同則會導致編譯錯誤)。
● 主方法入口:所有的 Java 程式由 public static void main(String[] args)方法開始執行。
Java 的設計目的主要是安全性和可攜性,所以對於一些特性,比如對硬體架構和記憶體位址存取的直接存取都被去除了。如果需要間接調用這些底層功能的話,就需要使用 JNI(Java本地介面)來調用本地程式,而間接存取意味著頻繁調用這些特性時效能損失會很大,微軟的 .NET 平臺也有這樣的問題。
重視效能的程式,例如驅動程式和 3D遊戲,常使用本地編譯 (在當前平台編譯,編譯得到的程式也是在本地執行),甚至直接以不直接支援物件導向的 C語言 或 機器碼 編寫。但也有用純 Java 編寫的 3D遊戲,其效果與用 C語言 編寫的不相上下,例如「合金戰士」(英文名:Chrome)。這主要是因為新版的 Java 3D 技術已經能像 C++ 一樣調用硬體加速,也就是使用顯卡來加速,無論是 C++ 還是 Java語言 寫的 3D遊戲 都是使用顯卡及 GPU 來處理,從而使得 CPU 可以專注於其他方面的工作。
由於 Java 編譯器和虛擬機的不同對 Java 程式碼的性能影響比語言本身的影響大的多,所以討論 Java 程式的性能經常是有誤導性的。據 IBM 的數據,在同樣的硬體上,2001年時的 IBM JDK 版本的性能是 1996年的 JDK 版本的十倍左右。參見 IBM 東京研究院的數據: http://www.is.titech.ac.jp/ppl2004/proceedings/ishizaki_slides.pdf ,即使是在同一時期,不同公司的 JDK 和 JRE 的性能也不一樣,比如 SUN、IBM、BEA 等公司過去都有開發自家的 JDK 和JRE。
維基百科:https://en.wikipedia.org/wiki/Java_(programming_language)
線上教學:http://www.kaiching.org/2014/11/java-guide.html
訂閱:
文章 (Atom)
程式語言編年史
程式語言編年史原文 下面這張圖片描繪了整個程式語言的歷史。包括各種程式語言的發明人、程式語言的特點和適用領域、被什麼網站或公司使用等 (檢視 完整高清圖 )。 之所以會有那麼多不同的程式語言是因為設計程式語言的初衷不同、對語言學習曲線的追求不同、不同程式之間的執行成本差異...
