Java地位無可動搖的12個原因
如今,面對曾經在程式設計師中被各種新技術掩蓋直至堙滅的技術值得懷念。猶如COBOL這當年被老程式設計師們尊為神器的語言如今也基本沒有價值。而Java作為現代程式設計師的中堅力量在這點上或許會成為下一個COBOL。
有關JAVA的技術賣出多少本書已經是一個很久遠的記憶了。現處中年時期的Java語言的用途已經不再出現在各種雜誌的封面上了。JAVA從出生到現在已經19年了,應用開發圈已經開始繞著那些更有吸引力的新技術。Java或許是Web 1.0時代的一個傳說。
從招聘資訊你就可以知道,跟iOS相關的開發有2500左右的招聘,Java則有17000多個。資料不一定能完美的衡量技術的價值,但是在不斷推陳出新的技術推廣壓力下,Java職位是iOS的7倍之多可以說明問題。
在忘記Java在計算機行業裡所扮演的角色和做出的那些卓越貢獻前,有12個絕對的理由來告訴你Java不但不會和COBOL一樣被堙滅,並且在其後時代中更加壯大。換句話說:Java一直就在並且其地位無法撼動。
Java在市場鬥爭中不屈不撓
技術界從來沒認為Java會成功,儘管它的對手太多但依然繁榮發展起來。那些詫異Java仍然存在的人們並沒有真正去理解為什麼Java會成功。微軟是 Java第一個面對的強大對手,因為那時MS-DOS提供了通用性,而微軟看到Java是此通用性最具可能性的替代者。
此外,蘋果Steve Jobs從來沒接收過Java,即使是在Mac被除了Adobe之外所有人忽視的年代。Java的相容性可以帶來很多有用的程式碼,但是Apple一直未把Java視作第一選擇。
Java內部的很多鬥爭也給它帶來了巨大痛苦。IBM喜歡Java,但是一直在和Sun鬥爭。IBM將其開發的優秀的IDE工具稱為“Eclipse”的決定,一直沒被Sun的人員欣然接受。Sun也從來沒像IBM那樣深刻理解商業領域。
儘管這些原因,儘管Java創造者也在Java發展中有許多失策之處,Java依然快速壯大,在伺服器應用領域如魚得水,在桌面應用領域滿足基本業務需求。
Java虛擬機器優化執行緒的魔力
Java虛擬機器的強項之一是多執行緒控制。JVM針對大型多核機上數百執行緒的穩定性做了極佳的優化。其他語言會為了能跑在JVM上面搞出交叉編譯器和模擬 器。Java的這個能力同時也吸引了很多高流量的網站。他們可以在桌上型電腦上搞開發然後丟到伺服器上讓JVM發揮出多核的功效。
Ruby因為語法的簡潔和原始碼可讀性好成為了Java目前的一個對手。但是當效能成為瓶頸時,Ruby開發人員轉到了JRuby,一個用Java模擬出來的Ruby環境並增強了高負載下的執行緒處理能力。
Java成為程式設計初學者的語言
作為大學AP計算機課程,意味著在美國很多學生第一次接觸到的計算機語言就是Java。由於這個先入為主的原因,當他們學習其他新的語言時,即便轉行學其他語言課程,但是他們在思考的時仍會受到Java的影響。
Java作為一個教學語言是有它的原因的。宣告資料型別看上去可能比較抽象,但是為了能讓初學者理解計算機的原理,宣告資料型別通過編譯器會告訴他們數 據型別不匹配而無法編譯時,可以讓他們更好的理解計算機的底層原理。而一些新語言已經摒棄了花括號,維護麻煩使得新人有所厭倦,但是花括號對那些新手是非 常有用的,因為能幫助他們理解巢狀的程式碼塊。
Java具有跨平臺相容性
雖然Java並不是第一個提供跨平臺相容能力的語言,但是Java已經成為最受歡迎的跨平臺程式設計工具,Sun以及Oracle已經為程式可以跨平臺使用提供支援。當程式不能在多個平臺上使用時,導致問題的原因通常是可以解決的。
Java程式設計師可以使用他們的桌面開發工具進行編碼,並部署到目標裝置,可能是一臺手機或者一臺伺服器。如果編譯器包含了正確的庫並且使用了正確的版本,程式碼就可以執行。
Java在移動領域上的持續成功
Java也許並沒在大型應用程式中有很好體現,但它卻在移動領域的細分市場獲得快速發展。Android平臺從上到下都是基於Java構建起來的,並且它如今的銷量輕易的超過了iPhone。JAVA ME作為精簡版的語言和VM已經被廣泛應用在智慧手機上,而智慧手機如今已經遍佈在全世界。
Java在藍光應用取得突破
Java曾經為機頂盒而設計的語言,Sun想在佔據此市場,但是Java卻在另外領域中找到了合適的位置。藍游標準是圍繞Java建立,任何想在藍光光 碟中新增額外內容的人,必須得到其Javac編譯器版本。藍光光碟不止限於存放視訊內容。那些額外特性和互動工具可以使用純Java程式碼修改並增強。壓縮 後的視訊和壓縮後的Java位元組碼的混合。
Java讓花括號能優化程式碼工作
類似 Ruby、Python或CoffeeScript等語言的開發者對於Java要求程式設計師們敲打花括號鍵來明確表達程式碼段的開始和結束。括號、花括號、甚 至方括號對於程式設計師略顯多餘。但是改變符號並不能消除複雜性,使用像製表符等空白後你只能用直覺去感受那些無法看到的東西。
如果if語句只引導了一行程式碼,這樣不會有問題,但是當很多層巢狀時,就很難看明白。當用Python程式設計時,並不意味著程式碼像理解英文簡單。
Java動態型別語法工具Groovy
Java開發者必須要有一個帶有動態型別的語法,可以使用Groovy一個帶有前處理器的工具,它能夠生成出Java位元組碼來。這種語言也完全整合到了Java中,因此可以在Groovy中混入對Java庫的呼叫。就像是編寫Java程式碼的縮略形式。
這一靈活性讓開發工程師得以找到問題的出路。在使用了動態方法呼叫時,開發者可以用Java來重寫重要的核心操作。
Java虛擬機器讓程式設計更加的靈活
Java虛擬機器是按照執行Javac編譯器產生的程式碼源頭來設計和優化,但開發者們意識到Java虛擬機器也可以執行其他程式碼。只要編譯器們產出標準的 Java位元組碼,Java虛擬機器根本不關心是使用的那種程式語言。Haskell、Scala和Clojure的開發者們設計編譯器就採用Java,而只 是這個由Java虛擬機器產生的。
另外,Sun/Oracle 為建立跨平臺環境而努力,工程師們消除平臺間差異,並考慮相容性問題,然後所有人可以執行他們想執行的程式。微軟在建立C#時為大部分主要語言設計了編譯 器,使得C#虛擬機器可以執行這些語言編寫的所有程式。C#程式設計師可以用很多不同的語言編寫程式,只要通過一個Windows盒子將其執行在一個虛擬機器上即可。
NoSQL建立在Java之上
資料庫是儲存資訊並快速有效應對查詢請求。NoSQL的出現讓程式設計師們可以自己編寫資料庫,並根據需求修剪其程式碼。那些最重要NoSQL工具中很多都是 用Java編寫。Cassandra、Lucene、ElasticSearch、HBase和Neo4J只是一些經常提到的NoSQL選擇。
據瞭解,工具通常是開源的。開發者將其獨立執行,或將它們整合在自己的模組中,使得Java在資料庫層中成為通用語言,保證了Java開發者們擔心由於字元編碼和行結束符帶來的故障。這意味著Java開發者們可以享受由NoSQL革命帶來的豐碩果實。
Minecraft遊戲中00後的情結
非主流們對Java嗤之以鼻,但是Java程式設計師們卻領先一步。在Ruby時尚團正聚集起自己的一群粉絲時,Minecraft讓之後的一代人愛上了Java。它用Java編寫而成,要擴充套件該遊戲就需學習Java來設計其外掛,這保證下一代程式設計師首選是Java。
開源成就Java程式碼廣泛的應用
Sun一直是開源領域中的領導者之一,Java程式設計師們釋出眾多開源許可的庫和專案。Apache專案一直都在使用一個沒要求太多回報的許可證來提供優 秀的Java程式碼。07年完成在GPL許可下公開大部分程式碼的工作,這種開放的立場一直延續並保證Java平臺很大程度是開放和免費的。
由此,Java有自己的問題,花括號增加混亂等缺點。但目前還沒有一個廣度和深度上可與之競爭的語言。最接近的也許是JavaScript,依靠有閃電般速度的Node.js在伺服器領域受到廣泛關注。而語言是開源且靈活多變,意味著Java程式繼續存在甚至更加興旺。
相關文章
- 12個Java長久佔居主要地位的原因Java
- Java長存!12個Java長久佔居主要地位的原因Java
- iOS中按鈕無法互動的5個原因iOS
- 微信搖一搖的一個有趣應用
- 微信IOS中搖一搖無法播放聲音iOS
- oracle之 監聽器無法啟動的幾個原因總結Oracle
- 如何用純 CSS 創作一個搖搖晃晃的 loaderCSS
- 如何推翻JAVA的統治地位?Java
- hibernate無法自動建表的原因以及.sql檔案無法執行的原因SQL
- 盤點MySQL慢查詢的12個原因MySql
- EM agent無法啟動的原因及分析
- ADFS服務無法啟動的原因排查
- Intel以無線充電再戰ARM移動市場地位?Intel
- Mercury Research:蘋果開始動搖英特爾及x86在PC市場幾十年的主導地位蘋果
- 學Java發展前景好的三個原因!Java
- 密謀:如何推翻Java的統治地位?Java
- 堅持“動態清零”不動搖
- Qt 無邊框、透明、可移動、的個性窗體案例詳解QT
- HBase啟動不了的一個原因處理
- U盤安裝Ubuntu 12.04成功後系統無法啟動的原因及解決辦法Ubuntu
- 12 個全球認可的 Linux 認證Linux
- IIS無法訪問動態連結庫DLL的原因
- Jtti:c++無法啟動程式的原因有哪些JttiC++
- 無法新增某個relationship給SAP CRM Product category的一個可能原因Go
- Android搖一搖、螢幕方向的監聽Android
- 【ASM】ASM啟動無法找到spfile問題原因ASM
- 12 個可替代樹莓派的單板機樹莓派
- 不要急於切換到Java 8的6個原因Java
- Angular 專案中的可搖樹依賴 - Tree-shakable dependenciesAngular
- 2-59. 製作可砍伐的樹木搖晃和倒下動畫動畫
- UltraISO 製作U盤系統盤無法啟動的原因AI
- 實現一個可無限摺疊的table
- iOS-OC-仿微信搖一搖iOS
- 拖慢系統啟動的8個原因[上](轉)
- 拖慢系統啟動的8個原因[下](轉)
- 動態SQL 無許可權錯誤SQL
- redis連線成功操作無反應,nginx 504的另一個原因RedisNginx
- UICollectionView SelectItem方法無效的原因UIView