91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Java為什么一直在編程語言榜首

Wildesbeast ? 來源:今日頭條 ? 作者:軟帝學院 ? 2020-02-17 15:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我們很容易就會遺忘那些曾經(jīng)在猿群中大熱而又被各種新技術(shù)掩蓋直至堙滅的技術(shù)的價值。就拿COBOL這個老猿們當年所用的神器來說,就跟條死魚一樣被現(xiàn)代猿基本這么形容:沒價值,腥臭,過時了,對你沒好處。Java 作為現(xiàn)代猿的中堅力量在這點上可能會成為下一個COBOL。

有關(guān)JAVA的技術(shù)賣出多少本書已經(jīng)是一個很久遠的記憶了。現(xiàn)處中年時期的Java語言的用途已經(jīng)不再出現(xiàn)在各種雜志的封面上了。JAVA從出生到現(xiàn)在已經(jīng)19年了,應(yīng)用開發(fā)圈已經(jīng)開始繞著那些更有吸引力的如“Node.js”,"Objective-C","Dart","Go" 等等類似的新技術(shù)轉(zhuǎn)圈了。Java? 那是Web 1.0時代的一個傳說吧?

從Dice.com網(wǎng)站的招聘信息你就可以知道押寶在哪。跟iOS相關(guān)的開發(fā)有2500左右的招聘,Java則有17000多個。Dice的數(shù)據(jù)不一定能完美的衡量技術(shù)的價值,但是在不斷推陳出新的技術(shù)推廣壓力下,Java職位是iOS的7倍之多可以說確實是神器了。

也許,相比把私人開發(fā)App的收入的30%分給Apple并期盼(更多的是等死)你的App有一天爬上了Top-25List,Java開發(fā)可能會給你一個更好的商業(yè)計劃。但是實際上,Java一直都要面對一個比怎么玩鳥砸豬還要大的問題。那就是如何在任意平臺上建立統(tǒng)一平臺并流暢運行的問題。這樣服務(wù)端程序猿,客戶端程序猿,嵌入式程序猿所面對的那些平臺不統(tǒng)一的問題都得到了解決。

在我們忘記Java在計算機行業(yè)里所扮演的角色和做出的那些卓越貢獻前,這里有12個絕對的理由來告訴你Java不但不會和COBOL一樣被堙滅,并且在其后時代中更加壯大。

換句話說:別說這是Java的逆襲,Java一直就在,并且其地位無法撼動。

一、在政治(通常手段低劣)斗爭中不屈不撓

開始時,技術(shù)界從來沒認為Java會成功,因為它的對手太多而且都是“土豪”。盡管如此,Java還是繁榮發(fā)展起來。那些詫異Java仍然存在的人們,一定是花了太多時間聽那些對Java懷恨在心的人,而沒有花時間去理解為什么Java會成功。

微軟是Java第一個面對的強大對手,因為那時MS-DOS提供了通用性,而微軟看到Java是此通用性最具可能性的替代者。Redmond從一開始就對Java惡評不斷,從每個可能方面與其斗爭(譯注,Redmond,雷德蒙德,是微軟總部所在地,此處代指微軟公司)。在桌面應(yīng)用方向,Java從來沒有找它需要的發(fā)展推動力,部分是因為強大的Java虛擬機啟動時需要花費太長時間。盡管有些啟動延時,Java應(yīng)用在Window平臺上還是可用的。
由于一些不明原因,Steve Jobs(譯注,史蒂夫·喬布斯)從來沒接收過Java,即使是在Mac被除了Adobe之外所有人忽視的年代。Java的兼容性可以帶來很多有用的代碼,但是Apple一直未把Java視作第一選擇。(的確,iOS智能手機比起我用的Android更流暢,所以也許Steve是對的。)

Java內(nèi)部的很多斗爭也給它帶來了巨大痛苦。IBM喜歡Java,但是一直在和Sun斗爭。IBM將其開發(fā)的優(yōu)秀的IDE工具稱為“Eclipse”的決定,一直沒被Sun的人員欣然接受。Sun也從來沒像IBM那樣深刻理解商業(yè)領(lǐng)域。

盡管這些原因,盡管Java創(chuàng)造者也在Java發(fā)展中有許多失策之處,Java依然快速壯大,在服務(wù)器應(yīng)用領(lǐng)域如魚得水,碩果累累,在桌面應(yīng)用領(lǐng)域滿足基本業(yè)務(wù)需求。所有技術(shù)都需要在政治湍流中前行,但是Java走的更難也更遠,證明了,通常,Java對許多應(yīng)用都是一個優(yōu)良選擇。

二、線程的魔力

Java虛擬機的強項之一是多線程控制。JVM針對大型多核機上跑數(shù)百線程的穩(wěn)定性做了極佳的優(yōu)化。這也是為什么其他語言會為了能跑在JVM上面搞出交叉編譯器和模擬器。

Java的這個能力同時也吸引了很多高流量的網(wǎng)站。他們可以在臺式機上搞開發(fā)然后丟到服務(wù)器上讓JVM發(fā)揮出多核的功效。

Ruby 因為語法的簡潔和源碼可讀性好成為了Java目前的一個對手。但是當性能成為瓶頸時,Ruby開發(fā)人員轉(zhuǎn)到了JRuby,一個用Java模擬出來的Ruby環(huán)境并增強了高負載下的線程處理能力。Sun的老猿們在細節(jié)上的處理讓JRuby大受歡迎。(譯注:好像多數(shù)人都是寫完Ruby程序然后用JRuby打成war丟服務(wù)器上....)

三、Java是初學者的語言

宗教,軍隊和國家興旺都離不開對國人少年時期的洗腦。作為大學AP計算機課程(譯注:高中生可修并計入大學學分的課程。由美國大學理事會提供,就是負責美國SAT的那個機構(gòu))意味著很多學生第一次接觸到的計算機語言就是Java。由于這個先入為主的原因,當他們學習其他新的語言時,他們會反觀Java的優(yōu)點和缺點,就算大部分轉(zhuǎn)行學其他語言了--雖然大部分學生修完課程就把Java丟一邊了--但是他們在思考的時候仍會受到Java的影響。

Java作為一個教學語言是有它的原因的。有些幼猿不喜歡聲明數(shù)據(jù)類型,認為好像有人讓你穿個背帶褲又要系皮帶一樣是多此一舉的行為。這個看上去可能比較抽象,但是為了能讓幼猿們理解計算機的一些原理,這是一個很好的方法。讓幼猿在寫代碼的時候聲明數(shù)據(jù)類型,然后編譯器會告訴他們數(shù)據(jù)類型不匹配而無法編譯時可以讓他們更好的理解計算機的底層原理。
一些所謂時髦的語言已經(jīng)摒棄了花括號,因為他們覺得維護它們很麻煩。這也許是對的,但是花括號對那些新手是非常有用的,因為這能幫助他們理解嵌套的代碼塊?;ɡㄌ枎椭氯?a target="_blank">拆解所有的嵌套。

有些人想努力推廣他們自己的語言,在大多數(shù)情況下,他們心愛的語言更自由,并沒有像java那么多的限制和規(guī)則。他們有一個非常好的想法,但是他們忽略了這么一個事實,就是越簡單,越干凈的語法會在后期開發(fā)中出現(xiàn)明顯的問題。一些人覺得這種“穿個背帶褲又要系皮帶”方式讓人窒息,但是java在一開始就推動更好的編程習慣。當新手經(jīng)過好的訓(xùn)練后,他們就可以處理這種自由和危險的編程方式了。

四、跨平臺兼容性(已經(jīng)很接近了)

雖然Java并不是第一個提供跨平臺兼容能力的語言,但是Java已經(jīng)成為最受歡迎的(跨平臺語言)。這并不是說Java是完美的——缺少的一個庫或者一個版本不匹配的庫都會導(dǎo)致程序崩潰。你也不能把使用最新的JRE 1.7編譯的需要使用大量內(nèi)存的桌面程序放到一臺Java ME手機上運行。Java并不是那么兼容。

但是Sun以及現(xiàn)在的Oracle已經(jīng)為程序可以跨平臺使用做了最大的努力。當程序(不能在多個平臺上)使用時,(導(dǎo)致這些問題的)原因通常是可以弄懂的。如果你使用合適的Java版本,并且確保有足夠的內(nèi)存,那么,(程序)一般可以正常工作。Java程序員可以使用他們的桌面開發(fā)工具進行編碼,并部署到目標設(shè)備,可能是一臺手機或者一臺服務(wù)器。如果編譯器包含了正確的庫并且使用了正確的版本,代碼就可以運行。這是一個很可貴的(特性)。

五、在小芯片上的持續(xù)成功

Java也許從沒有在桌面領(lǐng)域造就過大型的應(yīng)用程序,但它卻在移動世界中找到了一片溫床 —— 這是一個爆發(fā)了的細分市場。Android平臺從上到下都是基于Java構(gòu)建起來的,并且它如今的銷量輕易的超過了iPhone

這一霸主地位并不是新晉的。JAVA ME作為精簡版的語言和VM已經(jīng)被廣泛應(yīng)用在許多所謂功能手機之上,那些智能手機在全世界的數(shù)量也幾乎數(shù)以百億計。

當你將它們都混合到一起,Java的優(yōu)勢是就是驚人的。

六、藍光(Blu-ray)

Java曾經(jīng)被稱為“Oak”,是為機頂盒而設(shè)計的語言,Sun想在占據(jù)此市場。事情沒有完全按照計劃發(fā)展,但是Java卻在“客廳”中找到了合適的位置。藍光標準是圍繞Java建立的,任何想在藍光光碟中添加額外內(nèi)容的人,必須得到其Javac編譯器版本。

藍光光碟不止限于存放視頻內(nèi)容。那些額外特性和交互工具可以使用純Java代碼修改并增強。藍光光碟是壓縮后的視頻和壓縮后的Java字節(jié)碼的混合。使用藍光標準,你可以實現(xiàn)不少功能。

七、花括號正好能工作

那些像Ruby、Python或CoffeeScript等時髦語言的愛好者們開心的蔑視Java(和C)是怎樣的要求程序員們反復(fù)敲打花括號鍵來明確表達代碼段的開始和結(jié)束。括號、花括號、甚至方括號——都是這些人深惡痛絕的。(我本人也非常討厭它們,但我仍然懷念有一些類型的Lisp語言讓你使用一個方括號結(jié)束所有內(nèi)容的編程方式。)

但是改變標點符號并不能消除復(fù)雜性。如果有用,它也只是隱藏或者掩飾了復(fù)雜性。使用像制表符等空白后你只能用直覺去感受那些無法看到的東西。如果if語句只引導(dǎo)了一行代碼,這樣不會有問題,但是當很多層嵌套時,就很難看明白。當我用Python編程時,我發(fā)現(xiàn)自己在反復(fù)數(shù)這些縮進。只是因為這樣看起來像英文,并不意味著它像理解一句英文那么簡單。

八、Groovy

假如Java開發(fā)者必須要有一個帶有動態(tài)類型的更清潔更簡單的語法,他們沒必要去運行一種新奇的語言。他們可以使用Groovy,一個帶有預(yù)處理器的整潔的利器,它能夠生成出Java字節(jié)碼來。這種語言也完全集成到了Java中,因此你可以在你的Groovy中混入對Java庫的調(diào)用。就像是編寫Java代碼的縮略形式。

這一靈活性讓開發(fā)工程師得以找到問題的出路。當然Groovy是慢——這通常是在使用了動態(tài)方法調(diào)用的時候 —— 開發(fā)者可以一直用Java來重寫重要的費時的核心操作。

九、Java虛擬機

Java虛擬機是按照運行Javac編譯器產(chǎn)生的那些代碼來的目的來設(shè)計和優(yōu)化的,但是某個時候開始,開發(fā)者們意識到Java虛擬機也可以運行其他代碼。只要編譯器們產(chǎn)出標準的Java字節(jié)碼,Java虛擬機根本不關(guān)心是使用的那種編程語言。Haskell、Scala和Clojure的開發(fā)者們按這個方式設(shè)計他們的編譯器搭上了Java這趟快車。而且他們只是這個由Java虛擬機產(chǎn)生的生態(tài)圈中幾個比較優(yōu)秀的代表。

吸引力是顯而易見的,Sun/Oracle為創(chuàng)建跨平臺環(huán)境而努力,所有其它人從中受益。Sun/Oracle的工程師們消除平臺間差異,并考慮兼容性問題,然后所有人可以運行他們想運行的程序。

微軟在創(chuàng)建C#時借用(并擴展)了這個創(chuàng)意,為大部分主要語言設(shè)計了編譯器,這樣C#虛擬機就可以運行這些語言編寫的所有程序。C#程序員說他們可以用很多不同的語言編寫程序,只要通過一個Windows盒子將其運行在一個虛擬機上即可。何等靈活!

十、NoSQL革命很大部分建立在Java之上

很久之前,數(shù)據(jù)庫是一個神秘的黑盒子,它保存信息并快速有效的應(yīng)對查詢請求。然后NoSQL革命來臨,程序員們意識到他們可以自己編寫自己的數(shù)據(jù)庫,并根據(jù)需求修剪其代碼。那些最重要的NoSQL工具中很多都是用Java編寫的。Cassandra、Lucene、ElasticSearch、HBase和Neo4J只是一些經(jīng)常提到的NoSQL選擇。然后還有一些像acid-state等程序,使用Haskell編寫并運行在Java虛擬機中。

這些工具通常是開源的,可以方便的集成。一些開發(fā)者將其獨立運行,另一些人將它們集成在自己的模塊比如庫中。不論哪種方式,Java在數(shù)據(jù)庫層中成為通用語言的情況,保證了Java開發(fā)者們的生活更簡單了些。 他們更少擔心由于字符編碼和行結(jié)束符帶來的小故障。這意味著Java開發(fā)者們可以享受由NoSQL革命帶來的豐碩果實。

十一、Minecraft游戲融入00后們的共同情結(jié)中

也許布魯克林時尚的非主流們對Java嗤之以鼻,但是Java程序員們卻領(lǐng)先一步。在Ruby時尚團正聚集起自己的一群粉絲時,他們之后的一代人卻愛上了Java。為什么?一個詞:Minecraft。它用Java編寫而成。如果孩子們想要擴展該游戲,他們就需要學習Java來設(shè)計其插件。這保證下一代程序員第一個學習的是Java。

十二、開源

Sun一直是開源領(lǐng)域中的領(lǐng)導(dǎo)者之一,但它卻在完全開放Java的過程中時有猶豫。但這并沒有妨礙Java程序員們發(fā)布很多偉大的有著寬松開源許可的庫和項目。Apache項目一直都在使用一個沒要求太多回報的許可證來提供優(yōu)秀的Java代碼。

Sun在2007年完成了在GPL許可下公開大部分代碼的工作,從那時開始,它和它之后的新主人Oracle想努力成為它認為的Java的合格管家。當然,這種開放的立場并沒有阻止Oracle將Google拖入一場混亂的法律訴訟中,但是另一方面,Java平臺很大程度是開放和免費的。

討厭它的人很多,但Java持續(xù)前行

的確Java有它自己的問題,而且討厭的Java人們也會越來越多, 并將他們的不滿情緒充斥在線上評論區(qū)中。Java垃圾回收器會引起程序的小抽風。程序書寫規(guī)則繁重,也并不能阻止那些確實差勁的代碼。注解(譯注:annotation)太復(fù)雜。各個特性也不如之前演進的頻繁。花括號增加混亂。其缺點列表很長,但是通常是合情理的。

然而目前還沒有出現(xiàn)一個廣度和深度上可與之競爭的對手。雖然一些抱怨很容易解決,但是解決方案本身會帶來自己的問題。最接近的也許是JavaScript,依靠有閃電般速度的Node.js,它在服務(wù)器領(lǐng)域越來越有吸引力。不過這些創(chuàng)意可以被復(fù)制,程序員們也可以用其來編寫快速的Java。這是Java的優(yōu)勢之一:它運行所有程序,而且接受改變。如果你需要不同的功能,你可以將大部分庫替換成自己的代碼。語言是開源的而且靈活多變。不論語言和平臺有什么限制,都可以相對輕松的解決。這意味著Java程序員繼續(xù)是最具生產(chǎn)力的人員之一。即使相關(guān)圖書不在能再占據(jù)暢銷榜,軟件更新也沒之前頻繁,Java將依然存在甚至更加興旺。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    3002

    瀏覽量

    116548
  • iOS
    iOS
    +關(guān)注

    關(guān)注

    8

    文章

    3401

    瀏覽量

    155542
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1672

    瀏覽量

    51719
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    LabView 程序內(nèi)存一直增長,內(nèi)存溢出問題?

    LabView 程序內(nèi)存一直增長,求助,有償,比較復(fù)雜的程序,需要非常精通的人幫忙,謝謝
    發(fā)表于 01-12 09:05

    汽車網(wǎng)絡(luò)安全開發(fā)語言選型指南:C/C++/Rust/Java等主流語言對比+Perforce QAC/Klocwork工具支持

    汽車網(wǎng)絡(luò)安全如何選編程語言?C、C++、Rust、Java……誰更適合AUTOSAR、ISO/SAE 21434?文了解8種主流語言的優(yōu)劣
    的頭像 發(fā)表于 12-26 11:13 ?463次閱讀
    汽車網(wǎng)絡(luò)安全開發(fā)<b class='flag-5'>語言</b>選型指南:C/C++/Rust/<b class='flag-5'>Java</b>等主流<b class='flag-5'>語言</b>對比+Perforce QAC/Klocwork工具支持

    大數(shù)據(jù)商業(yè)應(yīng)用一直在變化:移動BI的發(fā)展和廠商對比

    在數(shù)聚股份看來,伴隨著移動互聯(lián)網(wǎng)的爆發(fā)式發(fā)展,人們的生活方式也因此發(fā)生著快速的改變。從個人生活,到政府管理,再到企業(yè)的大數(shù)據(jù)商業(yè)應(yīng)用,無不在發(fā)生改變。目前移動技術(shù)幫助眾多企業(yè)實現(xiàn)了市場差異化和業(yè)務(wù)增長,構(gòu)建起創(chuàng)新、適應(yīng)、協(xié)作及盈利等各種能力,從而為成功奠定堅實基礎(chǔ)。簡言之,商業(yè)已全面數(shù)字化,正是那些高管充分認識到數(shù)字技術(shù)所能帶來顯著效益的企業(yè)從競爭中脫穎而出的可能性更大。 中國企業(yè)在將重點移動技術(shù)項目
    的頭像 發(fā)表于 12-19 15:36 ?229次閱讀
    大數(shù)據(jù)商業(yè)應(yīng)用<b class='flag-5'>一直在</b>變化:移動BI的發(fā)展和廠商對比

    為什么單片機還在用C語言編程?

    ,只是C語言是最適合單片機編程的高級語言、單片機編程的特點 1.對單片機編程來說,我
    發(fā)表于 11-28 07:37

    C語言是否會阻礙嵌入式的發(fā)展?

    嵌入式系統(tǒng)這個領(lǐng)域一直都充滿魅力。它支撐著從家電到醫(yī)療設(shè)備、再到太空探索等幾乎所有類型的現(xiàn)代設(shè)備。但有意思的是,盡管技術(shù)一直在飛速進步,我們卻發(fā)現(xiàn),真正歷經(jīng)數(shù)十年依然堅挺、貫穿整個行業(yè)核心的,還是那
    的頭像 發(fā)表于 11-14 10:27 ?403次閱讀
    C<b class='flag-5'>語言</b>是否會阻礙嵌入式的發(fā)展?

    文了解Mojo編程語言

    Mojo 是種由 Modular AI 公司開發(fā)的編程語言,旨在將 Python 的易用性與 C 語言的高性能相結(jié)合,特別適合人工智能(AI)、高性能計算(HPC)和系統(tǒng)級
    發(fā)表于 11-07 05:59

    Arm Neoverse CPU上大代碼量Java應(yīng)用的性能測試

    Java 是互聯(lián)網(wǎng)領(lǐng)域廣泛使用的編程語言Java 應(yīng)用的些特性使其性能表現(xiàn)與提前編譯的原生應(yīng)用(例如 C 程序)大相徑庭。由于
    的頭像 發(fā)表于 11-05 11:25 ?803次閱讀
    Arm Neoverse CPU上大代碼量<b class='flag-5'>Java</b>應(yīng)用的性能測試

    在lin系統(tǒng)中下載github一直報錯,顯示port443,怎么解決?

    在lin系統(tǒng)中下載github一直報錯,顯示port443
    發(fā)表于 11-05 07:22

    求助:STM32H743IIT6使用QBOOT一直重啟怎么解決?

    STM32H743IIT6使用QBOOT一直重啟
    發(fā)表于 09-19 07:06

    使用CY8CKIT-005編程器給CYPD5126-40LQXI燒錄固件,一直報錯無法連接怎么解決?

    使用CY8CKIT-005編程器給CYPD5126-40LQXI燒錄固件,一直報錯無法連接,燒錄接的是SWD接口。
    發(fā)表于 07-15 06:17

    深入理解C語言:函數(shù)—編程中的“積木塊”藝術(shù)

    在編程的世界里,函數(shù)就像建筑中的“積木塊”——它們是構(gòu)建復(fù)雜程序的基石。通過靈活組合這些模塊,開發(fā)者能打造出功能強大且結(jié)構(gòu)清晰的代碼。函數(shù)之所以成為C語言的核心,正是因為它解決了編程中的三大關(guān)
    的頭像 發(fā)表于 06-30 17:26 ?1922次閱讀
    深入理解C<b class='flag-5'>語言</b>:函數(shù)—<b class='flag-5'>編程</b>中的“積木塊”藝術(shù)

    運行kmodel模型驗證一直報錯怎么解決?

    我這運行kmodel模型驗證一直報錯,所以沒法做kmodel模型好壞驗證,不知道怎么解決這個問題,重新訓(xùn)練個kmodel模型會和拿相同pt訓(xùn)練的模型效果不樣嗎?在線云訓(xùn)練效果會好嗎? 或者大佬能不能說是我給您發(fā)pt、onnx
    發(fā)表于 06-10 08:02

    單片機c語言編程實例大全

    單片機c語言編程實例大全_18
    發(fā)表于 04-30 16:11 ?7次下載

    AD7606 busy信號一直為高是怎么回事?

    AD7606 這是我的原理圖,輸出的busy一直為高
    發(fā)表于 04-24 07:55

    蔡司CIMT2025 | 新品天團首位成員ZEISS ScanBox 4系亮相,引領(lǐng)測量新境界 蔡司新品組團出道 你是否一直在尋覓

    ? 蔡司新品組團出道 ? 你是否一直在尋覓款 能提升生產(chǎn)效率、把控質(zhì)量的測量武器? 現(xiàn)在,它來了! 在本次CIMT2025展會上 蔡司“新品天團”首位成員 “效率擔當” ZEISS ScanBox
    發(fā)表于 03-25 14:46 ?562次閱讀
    蔡司CIMT2025 | 新品天團首位成員ZEISS ScanBox 4系亮相,引領(lǐng)測量新境界    蔡司新品組團出道  你是否<b class='flag-5'>一直在</b>尋覓