1. 程式人生 > >Java基礎-Java語言簡介

Java基礎-Java語言簡介

發展歷史

1.java的起源:

   20世紀90年代,硬體領域出現了單片式計算機系統,使用它可以大幅度提升消費類電子產品(如電視機頂盒、麵包烤箱、行動電話等)的智慧化程度。Sun公司為了搶佔市場先機,在1991年成立了一個稱為Green的專案小組,專攻計算機在家電產品上的嵌入式應用。       

   另外為了跨平臺,在開發Oak語言以前,專案組先定義了符合嵌入式應用需要的二進位制機器碼指令系統(即後來成為“位元組碼”指令系統)。設想把此指令系統嵌入硬體,然後Oak語言基於此指令系統執行。以實現跨平臺。PS:話說sun挺狠。想控制微控制器市場。先讓生產硬體的廠商嵌入sun的指令系統。然後用sun開發的Oak語言開發嵌入式應用。

   1992年的夏天,當Oak語言開發成功後,sun向硬體廠商演示了專案組開發全套系統。包括Green作業系統、Oak語言、類庫和硬體。忽悠廣大硬體廠商使用sun的產品開發硬體。但是sun的如意算盤打錯了。硬體廠商並未對此產生多大的興趣。他們認為。在對Oak語言還不瞭解的情況下。就生產基於sun指令系統的硬體,風險太大。所以Oak也就被擱置下來了。

2.Java誕生

   轉眼到了1995年,網際網路的蓬勃發展給了Oak機會。業界為了使死板單調的靜態網頁能夠“靈活”起來,急需一種軟體技術來開發能夠使網頁動起來的小程式。於是,世界各大IT企業為此紛紛投入了大量的人力、物力和財力來開發這種技術。這個時候,Sun公司想起了那個被擱置起來很久的Oak,由於它是按照嵌入式系統硬體平臺體系結構進行編寫的,所以非常小,特別適用於網路上的傳輸系統。

   5月23日,Sun公司在Sun world會議上正式釋出Java和HotJava瀏覽器。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微軟等各大公司都紛紛停止了自己的相關開發專案,競相購買了Java使用許可證,併為自己的產品開發了相應的Java平臺。至此,java才算是正式誕生了。並不斷髮展演變至今。

特點

1.簡單性
設計者們把C++語言中許多無優勢的特徵去掉了。例,Java剔除go to語句、指標、C++的操作符過載(overload)和多繼承特徵,並且不使用主檔案main,免去了預處理程式。因為Java沒有結構,陣列和串都是物件,所以不需要指標。Java能夠自動處理物件的引用和間接引用,實現自動的無用單元收集(記憶體回收),使使用者不必為儲存管理問題煩惱,能更多的時間和精力花在研發上。
2. 面向物件
Java是一個面向物件的語言。意味著設計者重心不是嚴格地用過程來思考&函式為基本單位構建,而是資料和操縱資料的方法&類為基本單位構建。在一個面向物件的系統中,類(class)是資料域和方法的集合(模板)。資料和方法一起描述物件(object)的屬性(資料域)和行為。每一物件是其狀態和行為的封裝。類是按一定體系和層次安排的,使得子類可以從超類繼承行為。
Java還包括一個類的擴充套件集合,分別組成各種程式包(Package),使用者可以在自己的程式中使用。例如,Java提供產生圖形使用者介面部件的類(java.awt包),這裡awt是抽象視窗工具集(abstract windowing toolkit)的縮寫,處理輸入輸出的類(java.io包)和支援網路功能的類(java.net包)。
3.分佈性
Java設計成支援在網路上應用,它是分散式語言。Java既支援各種層次的網路連線,又以Socket類支援可靠的流(stream)網路連線,所以使用者可以產生分散式的客戶機和伺服器。
網路變成軟體應用的分佈運載工具。Java程式只要編寫一次,就可到處執行。
4.編譯性和解釋性
Java編譯程式生成位元組碼(byte-code),而不是通常的機器碼。Java位元組碼提供對體系結構中性的目標檔案格式,程式碼設計成可有效地傳送程式到多個平臺。Java程式可以在任何實現了Java解釋程式和執行系統(run-time system)的系統上執行。
在一個解釋性的環境中,程式開發的標準“連結”階段大大消失了。如果說Java還有一個連結階段,它只是把新類裝進環境的過程,它是增量式的、輕量級的過程。因此,Java支援快速原型和容易試驗,它將導致快速程式開發。這是一個與傳統的、耗時的“編譯、連結和測試”形成鮮明對比的精巧的開發過程。
注:下面還會詳細解釋。
5.穩健性
Java是一個強型別語言,它允許擴充套件編譯時檢查潛在型別不匹配問題的功能。Java要求顯式的方法宣告,它不支援C風格的隱式宣告。這些嚴格的要求保證編譯程式能捕捉呼叫錯誤,這就導致更可靠的程式。
可靠性方面最重要的增強之一是Java的儲存模型。Java不支援指標,它消除重寫儲存和訛誤資料的可能性。類似地,Java自動的“無用單元收集”預防儲存漏洩和其它有關動態儲存分配和解除分配的有害錯誤。Java解釋程式也執行許多執行時的檢查,諸如驗證所有陣列和串訪問是否在界限之內。
異常處理是Java中使得程式更穩健的另一個特徵。異常是某種類似於錯誤的異常條件出現的訊號。使用try/catch/finally語句,程式設計師可以找到出錯的處理程式碼,這就簡化了出錯處理和恢復的任務。
6.安全性
Java的儲存分配模型是它防禦惡意程式碼的主要方法之一。Java沒有指標,所以程式設計師不能得到隱蔽起來的內幕和偽造指標去指向儲存器,即不能操作記憶體。更重要的是,Java編譯程式不處理儲存安排決策,所以程式設計師不能通過檢視宣告去猜測類的實際儲存安排。編譯的Java程式碼中的儲存引用在執行時由Java解釋程式決定實際儲存地址。
Java執行系統使用位元組碼驗證過程來保證裝載到網路上的程式碼不違背任何Java語言限制。這個安全機制部分包括類如何從網上裝載。例如,裝載的類是放在分開的名字空間而不是區域性類,預防惡意的小應用程式用它自己的版本來代替標準Java類。
7.可移植性
Java使得語言宣告不依賴於實現的方面。例如,Java顯式說明每個基本資料型別的大小和它的運算行為(這些資料型別由Java語法描述)。
Java環境本身對新的硬體平臺和作業系統是可移植的。Java編譯程式(JVM-JAVA虛擬機器)也用Java編寫,而Java執行系統用ANSIC語言編寫。
8.高效能
Java是一種先編譯後解釋的語言,所以它不如全編譯性語言快。但是有些情況下效能是很要緊的,為了支援這些情況,Java設計者製作了“及時”編譯程式(JVM-JAVA虛擬機器),它能在執行時把Java位元組碼翻譯成特定CPU(中央處理器)的機器程式碼,也就是實現全編譯了。
Java位元組碼格式設計時考慮到這些“及時”編譯程式的需要,所以生成機器程式碼的過程相當簡單,它能產生相當好的程式碼。
9.多線索性
Java是多線索語言,它提供支援多線索的執行(也稱為輕便過程),能處理不同任務,使具有線索的程式設計很容易。Java的lang包提供一個Thread類,它支援開始線索、執行線索、停止線索和檢查線索狀態的方法。
Java的線索支援也包括一組同步原語。這些原語是基於監督程式和條件變數風範,由C.A.R.Haore開發的廣泛使用的同步化方案。用關鍵詞synchronized,程式設計師可以說明某些方法在一個類中不能併發地執行。這些方法在監督程式控制之下,確保變數維持在一個一致的狀態。
10.動態性
Java語言設計成適應於變化的環境,它是一個動態的語言。例如,Java中的類是根據需要載入的,甚至有些是通過網路獲取的。

應用領域

1、Android應用 大多數的 Android應用都是Java程式設計師開發者開發。雖然 Android運用了不同的JVM以及不同的封裝方式,但是程式碼還是用Java語言所編寫。

2、金融服務行業的伺服器應用程式 Java在金融服務業的應用非常廣泛,很多第三方交易系統、銀行、金融機構都選擇用Java開發,比如:高盛、花旗等等全世界最牛的金融機構都是使用Java來編寫電子交易系統。因為相對而言,Java較安全。Java被廣泛用於在伺服器端開發,這些應用多數沒有任何前端,它們通常是從一個伺服器(上一級)接收資料,處理後發向另一個處理系統(下一級處理)。

3、Java Web應用程式 Java 在電子商務領域以及網站開發領域佔據了一定的席位。開發人員可以運用許多不同的框架來建立web專案,比如:SpringMVC,spring、mybatis等。即使是簡單的 servlet,jsp和以struts為基礎的網站在政府專案中也經常被用到。例如醫療救護、保險、教育、國防以及其他的不同部門網站都是以Java為基礎來開發的。

4、嵌入式領域 Java在嵌入式領域發展空間很大。在這個平臺上,只需130KB就能夠使用Java技術(在智慧卡或者感測器上)。原本java就是為嵌入式誕生的。

5、大資料技術 Hadoop以及其他大資料處理技術很多都是用Java,例如Apache的基於Java的Hbase和Accumulo以及 ElasticSearchas。

6、高頻交易的空間 Java平臺提高了這個平臺的特性和即使編譯,他同時也能夠像 C++ 一樣傳遞資料。正是由於這個原因,Java成為的程式設計師編寫交易平臺的語言,因為雖然效能不比C++,但開發人員可以避開安全性,可移植性和可維護性等問題。

7、 科學應用 Java在科學應用中是很好選擇,包括自然語言處理。最主要的原因是因為Java比C++或者其他語言相對其安全性、便攜性、可維護性以及其他高階語言的併發性更好。

二、Java屬於什麼語言

語言分類

從語言可讀性角度來看,語言可分成以下兩類

1.低階語言

  • 接近機器語言卻不貼近人類語言邏輯的程式語言,語言難以學習和使用,開發週期長。
  • 接近底層程式設計(機器語言),沒有解析的過程,通過程式可直接操作記憶體,效率高。如組合語言,一條指令對應機器程式碼的一條指令,通過彙編器可直接轉換成機器語言進行運作。

2.高階語言

  • 貼近人類語言邏輯的程式語言,像英語,高階語言的指令稱為語句,易學習和使用。
  • 由於機器執行的是機器語言,所以高階語言依賴編譯器解析器翻譯成機器語言(機器碼,即二進位制)進行運作,固效率較低階語言低。

高階語言又可將語言分成兩類

解釋語言:

直譯器從原始碼中讀取一條語句,將其翻譯成機器程式碼或虛擬機器器程式碼,然後立刻執行,一條語句可能被翻譯成多條機器指令。語言特點效率較編譯語言低,跨平臺性高。
這裡寫圖片描述

編譯語言

編譯器將整個原始碼翻譯成機器程式碼檔案,機器可直接執行該機器程式碼檔案。語言特點效率高,跨平臺性差。
這裡寫圖片描述
注意:但JAVA屬於高階語言,但不屬於解釋語言和編譯語言,請看我的另一篇部落格:
Java基礎-Java程式的執行。