看板 Soft_Job 關於我們 聯絡資訊
認真回 一個程式語言的使用率高低,可以考量以下幾點: 1. 開發效率 2. 執行效率 3. 第三方 library 豐富與否 4. 是否有殺手級應用 開發效率我不評論,因為我個人覺得靜態語言開發效率比不上動態語言 執行效率的話,您已經做出測試了 (而且您自己測試的 loop test,Java 可是第一) 此外 JVM 好歹存在了將近 20 年,總會一直在改良中 改到現在,就算不是最好,也不會是後段班 第三方 library 豐富與否也不用特地說了,這是 Java 高使用率的主因之一 更何況向後相容的久遠程度,使得開發上幾乎不怕找不到可用的 library 殺手級應用也是 Java 高使用率的另一個主因 Android、Spring、J2EE 等等,就好比 Ruby on Rails 相對於 Ruby 或是 Gradle 相對於 Groovy 最後一點,Java 裡面最有價值的 JVM,是跨平台的 畢竟這個世界上並不是只有 Windows (所以後來微軟才會也想搞跨平台吧) 我覺得 Java 的弱點,是在有畫面的程式上 (包括網頁) 所以才會陸續推出 JSF、JavaFX 1.0 / 2.0 等等,或是第三方的 ZK / GWT / GXT 這方面來說的確是用 Visual Studio 比較好寫 至於免費是否影響 Java 的使用率比 C# 高...我想或許還是有吧 不是每間公司都想花錢買 solution 的 更何況就我在職場裡看到的狀況來說,只有看過連 DBA / MIS 都無法解決的異常時 才會去 call 原廠的支援,不然幾乎都是他們自己解決 這種狀況發生機率極少 (否則這個 solution 也不用買了,爛斃了) 而寫程式跟 debug 時,我們也不會需要 call 原廠支援吧? 總不能叫微軟提供一個人,每天坐你旁邊讓你問這一段程式怎麼寫這樣... -- 題外話 以 Database 來說,Java 靠的是 JDBC 連接資料庫 所以各個廠商的 JDBC Driver 寫得好不好有差異 (比如您的測試數據中,在 MySQL 上跟其他程式語言的差異倍數就比較小) 而 JDBC 本身也有 4 種 type,每一種效率都不太一樣 還有一點是測試方式要提供一下,別人才有辦法評斷作法正確與否 畢竟並不是用完全相同的 code 直接在三種語言上跑 ※ 引述《sunlights (sunlights)》之銘言: : 這是我在win7平台 : iis+php7 : iis+asp.net(C# .net4) : java(1.8)+tomcat : 跑出來的 : loop test (10000000) : php : 0.25 : java : 0.013 : .net : 0.015 : database test : select 13446 data use mysql : php : 0.018 : java : 0.052 : .net : 0.028 : loop select 21 times use mysql : php : 0.01 : java : 0.143 : .net : 0.01 : select 13446 data use oracle : php : 0.039 : java : 2.036 : .net : 0.029 : loop select 21 times use oracle : php : 0.029 : java : 0.335 : .net : 0.037 : select 13446 data use mssql(express) : php : 0.053 : java : 6.26 : .net : 0.034 : loop select 21 times use mssql(express) : php : 0.05 : java : 129.451 : .net : 0.133 : 看起來C#的效能是最優的..為什麼 : java的使用率仍是超越.net的呢? : http://tinyurl.com/qyos7vg -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.164.130.106 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1450531005.A.8AB.html
manaup: swing明明就超好用 12/19 21:35
Timba: 推 12/19 21:37
Lordaeron: 跨平台, 強!! 你試試看寫JAVA, 在SUN/IBM/HP 等JDK跑 12/19 21:38
yfr: swing好不好用各有看法,但真的對新手不友善就是 12/19 21:38
Lordaeron: 看看, 看跨得多好囉. 12/19 21:39
Lordaeron: swing就反應慢來說, 就不好用了. 12/19 21:47
manaup: 要快也有SWT啊 12/19 21:50
更正一下,應該是說,Java 在圖形程式上的 "開發",不如 VS 方便
Lordaeron: 跟native完全沒得比. 寫再爛也會比JAVA寫的快. 12/19 21:58
YahooTaiwan: .NET 都要 native 化了... 12/19 22:01
YahooTaiwan: tive.aspx 12/19 22:01
YahooTaiwan: http://tinyurl.com/hbh4no5 12/19 22:01
manaup: 好久以前也有人幹過native化JAVA這種事 讓我們繼續看下去 12/19 22:09
typepeter: 其實到一定程度,效能是基於GC及開發除錯友善程度的 12/19 22:12
typepeter: 比較少人用nodejs或python寫大型heavy的程式 Java有 12/19 22:13
typepeter: Java算是取得中間平衡點 一堆內建lib好用,又好除錯 12/19 22:13
typepeter: Java本身算強型態,但JVM本身可以用一堆reflection 12/19 22:14
typepeter: 它在兩者間取得一個平衡,且JVM內建多執行緒機制 12/19 22:15
typepeter: 相比之下比C++好上手又多lib,比動態語言好debug 12/19 22:16
typepeter: 程式語言不是神主牌,他們只是工具 合用的工具才重要 12/19 22:17
typepeter: 前端JS,後端C++,JAVA,PY,什麼時候用什麼 就只是工具 12/19 22:19
Agree 工作上,很多時候並不是只會單用某一種語言,而是會全部都有可能使用到
csfgsj: 當JAVA說它跨平台,C就笑了,JAVA能跨到單晶片嗎? 12/19 22:21
我不知道 Java 能不能跨單晶片... 不過我知道 C 程式碼要在 AIX 上跑,就得在 AIX 上 compile 想在 Win 上跑,就得在 Win 上 compile 想在 Linux 上跑,就得在 Linux 上 compile 即使是嵌入式系統,也得使用交叉編譯器 compile 才能丟上去 而 Java 所謂的跨平台,是指 "Compile Once, Run Everywhere" 當然這點沒有做得很完美,就像 IBM AIX 上面的 JVM 跑起來總是跟 Linux 不太相同 (不過 IBM AIX 的 JVM 是 IBM 自己實作的就是...) 您也可以直接稱之為 "有限的跨平台" 不過哪天有出現可以完美 "Compile Once, Run Everywhere" 的語言時,麻煩請通知我
GoalBased: 推導內容好怪= = 12/19 22:38
抱歉,小弟面壁思過去 QQ ※ 編輯: GlinX (218.164.130.106), 12/19/2015 22:53:39
manaup: 不行 我一定要說服他們PHP才是最好的語言 12/19 22:47
chuegou: 單晶片是比較沒有需要用到高階語言啦...動態記憶體管理 12/19 23:06
chuegou: 挺麻煩的,資源少的單晶片就用C,剛剛好 12/19 23:07
p23j8a4b9z: 正常有學過計概應該都知道一般所謂跨平台是什麼意義吧 12/19 23:22
remmurds: 我比較好奇Android上的Java還能叫Java嗎? 12/19 23:29
remmurds: 從Dalvik到ART Android所謂的Java只能說是僅有Java的殼 12/19 23:34
remmurds: 骨子裡早就完全不同了 12/19 23:35
typepeter: 其實還是Java 因為API大部份有實作(Based on Harmony) 12/19 23:51
typepeter: 只是有些底層實作可能不同 換而言之可能有別的底層Bug 12/19 23:53
Lordaeron: freepascal-> write one compile anywhere 12/20 00:51
Lordaeron: 所謂跨平台是什麼意義啊,給廣大沒學過計概的講解一下吧 12/20 01:17
Java 也符合 write once compile everywhere 喔,只是更進階想做到 run everywhere (只要該平台可以安裝 JVM 的話) 跨平台定義可以看這裡: https://en.wikipedia.org/wiki/Cross-platform 這裡也有寫: http://www.pcmag.com/encyclopedia/term/40495/cross-platform#fbid=aHfb3ldkqPq Java 是不是被歸類於跨平台? 上面的網頁第二段有提到: The most universal cross platform development language is Java, which falls into the "Compile to an Intermediate Language" category below. Java 的維基網頁第一段也有提到 https://en.wikipedia.org/wiki/Java_%28software_platform%29 ......that provides a system for developing application software and deploying it in a cross-platform computing environment. 嚴格來講,跨平台的應該是 JVM,不是 Java 這連帶使得像 Groovy / Scala 這一類靠 JVM 執行的程式語言,也直接受益
Deltaguita: cs幹嘛又跳出來讓人家笑啊...... 12/20 06:23
討論就好,別這樣...0_0 ※ 編輯: GlinX (218.164.99.171), 12/20/2015 11:27:16
hidog: 單晶片理論上應該還是可以用java,只是實務上沒有人這樣做@@ 12/20 11:23
hidog: 就像PC程式可以用java,但是很少人這樣開發. 自己測試結果 12/20 11:24
hidog: 同樣的功能,java記憶體可能會是C++十倍,效率上也有落差... 12/20 11:25
hidog: 語言就只是工具而已 最終還是回歸需求面吧~ 12/20 11:25
wildpeanut: 以可以應用的場景和第三方函式庫來說,投資在Java身上 12/20 11:26
wildpeanut: 路還是比較廣的 12/20 11:26
leicheong: Java的「跨平台」光環, 在iOS上不支援那時候就已經消失 12/20 13:50
leicheong: 了. 然後因為Google/Oracle間的官司, 進一步削弱Java 12/20 13:52
leicheong: "Write once, run everywhere"這賣點. 12/20 13:52
leicheong: Java一天還在Oracle手中, 要重上高峰... 難啊... 12/20 13:53
remmurds: 突然想到Steve Jobs也是出了名的討厭Java 12/20 15:54
Lordaeron: Java 能write once compile anywhere? 前題是你如何寫 12/20 16:01
Lordaeron: 沒這個前題, 頂多就是SUN一派, IBM 一派, HP 一派,其它 12/20 16:02
Lordaeron: 再一派而已. 12/20 16:02
GlinX: 你真的有寫過 Java 嗎...我懶得回了 12/20 19:19
Lordaeron: 我真的沒寫過JAVA呢, 你連HP的JVM 是自已的都不知呢. 12/20 19:49
GlinX: HP自己有又如何? IBM AIX不也相同? 請問 JSR 是用來幹嘛的? 12/20 20:07
GlinX: 為什麼 Java 可以同一份程式碼在 Win/Linux/Mac/AIX等等上 12/20 20:08
GlinX: 面compile? 你以為它們剛好 API 都一樣? 跳針跳完了沒? 12/20 20:09
Lordaeron: 哈....等你跟HP IBM 同時打交導再說吧. 12/20 20:51
Lordaeron: 等你遇過SUN 在1.5了IBM 還在1.4 時再說. 哈......跳針 12/20 20:52
Lordaeron: 推出SPEC 這種解決方案, 果然是高手. SPEC打天下呢. 12/20 21:01
GlinX: 1.4就不能寫? 什麼鳥問題? JSR 倒底是啥你還沒回答我呢 12/20 21:27
GlinX: 以下對跳針問題不再回應 浪費我時間 12/20 21:27
Lordaeron: 你回去看SPEC 吧. JSR 呢. 12/20 21:43
luciferii: 跨平台但不跨版本:P 12/20 23:35
luciferii: 反正以後用瀏覽器都看不到java了,跨不跨平台對前端 12/20 23:36
luciferii: 使用者漸漸無所謂了啦:P 12/20 23:36
Lordaeron: 你隨便G一下都一堆同版本,不同VENDOR的問題. 12/20 23:43
edward13: HP-UX早支援jdk8了科科 沒得用只好怪公司沒錢換 12/21 00:44
Lordaeron: 等你去玩過再說嘴, 什麼年代, 發生什麼事, 沒遇過的人 12/21 12:19
Lordaeron: 就可以拿早就OO, 早就XX 來說, 不然連SPEC 都搬出來了. 12/21 12:20
Lordaeron: SPEC這麼偉大, C 為何搞成這個德性? 12/21 12:20
Lordaeron: 500元便當,大概就是這樣子來的了. 12/21 12:24
edward13: 喔~放飯囉 12/21 12:31
MonyemLi: JVM相容其實沒做得很漂亮,各廠時做的JVM也有差異 12/21 17:00
MonyemLi: 1.4時期AIX跟SUN忘了在哪塊不一樣,踩過雷 12/21 17:01
leo424yy: 秒買秒退,食安喚回 http://j.mp/_ts_ 12/21 18:10
leo424yy: 秒買秒退,食安喚回 http://j.mp/_ts_ 12/21 19:12