Re: [閒聊] 為什麼java的使用率比較高?

看板Soft_Job作者 (...無盡的終點...)時間10年前 (2015/12/19 21:16), 10年前編輯推噓10(11162)
留言74則, 20人參與, 最新討論串3/8 (看更多)
認真回 一個程式語言的使用率高低,可以考量以下幾點: 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

12/19 21:35, , 1F
swing明明就超好用
12/19 21:35, 1F

12/19 21:37, , 2F
12/19 21:37, 2F

12/19 21:38, , 3F
跨平台, 強!! 你試試看寫JAVA, 在SUN/IBM/HP 等JDK跑
12/19 21:38, 3F

12/19 21:38, , 4F
swing好不好用各有看法,但真的對新手不友善就是
12/19 21:38, 4F

12/19 21:39, , 5F
看看, 看跨得多好囉.
12/19 21:39, 5F

12/19 21:47, , 6F
swing就反應慢來說, 就不好用了.
12/19 21:47, 6F

12/19 21:50, , 7F
要快也有SWT啊
12/19 21:50, 7F
更正一下,應該是說,Java 在圖形程式上的 "開發",不如 VS 方便

12/19 21:58, , 8F
跟native完全沒得比. 寫再爛也會比JAVA寫的快.
12/19 21:58, 8F

12/19 22:01, , 9F
.NET 都要 native 化了...
12/19 22:01, 9F

12/19 22:01, , 11F
tive.aspx
12/19 22:01, 11F

12/19 22:01, , 12F

12/19 22:09, , 13F
好久以前也有人幹過native化JAVA這種事 讓我們繼續看下去
12/19 22:09, 13F

12/19 22:12, , 14F
其實到一定程度,效能是基於GC及開發除錯友善程度的
12/19 22:12, 14F

12/19 22:13, , 15F
比較少人用nodejs或python寫大型heavy的程式 Java有
12/19 22:13, 15F

12/19 22:13, , 16F
Java算是取得中間平衡點 一堆內建lib好用,又好除錯
12/19 22:13, 16F

12/19 22:14, , 17F
Java本身算強型態,但JVM本身可以用一堆reflection
12/19 22:14, 17F

12/19 22:15, , 18F
它在兩者間取得一個平衡,且JVM內建多執行緒機制
12/19 22:15, 18F

12/19 22:16, , 19F
相比之下比C++好上手又多lib,比動態語言好debug
12/19 22:16, 19F

12/19 22:17, , 20F
程式語言不是神主牌,他們只是工具 合用的工具才重要
12/19 22:17, 20F

12/19 22:19, , 21F
前端JS,後端C++,JAVA,PY,什麼時候用什麼 就只是工具
12/19 22:19, 21F
Agree 工作上,很多時候並不是只會單用某一種語言,而是會全部都有可能使用到

12/19 22:21, , 22F
當JAVA說它跨平台,C就笑了,JAVA能跨到單晶片嗎?
12/19 22:21, 22F
我不知道 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" 的語言時,麻煩請通知我

12/19 22:38, , 23F
推導內容好怪= =
12/19 22:38, 23F
抱歉,小弟面壁思過去 QQ ※ 編輯: GlinX (218.164.130.106), 12/19/2015 22:53:39

12/19 22:47, , 24F
不行 我一定要說服他們PHP才是最好的語言
12/19 22:47, 24F

12/19 23:06, , 25F
單晶片是比較沒有需要用到高階語言啦...動態記憶體管理
12/19 23:06, 25F

12/19 23:07, , 26F
挺麻煩的,資源少的單晶片就用C,剛剛好
12/19 23:07, 26F

12/19 23:22, , 27F
正常有學過計概應該都知道一般所謂跨平台是什麼意義吧
12/19 23:22, 27F

12/19 23:29, , 28F
我比較好奇Android上的Java還能叫Java嗎?
12/19 23:29, 28F

12/19 23:34, , 29F
從Dalvik到ART Android所謂的Java只能說是僅有Java的殼
12/19 23:34, 29F

12/19 23:35, , 30F
骨子裡早就完全不同了
12/19 23:35, 30F

12/19 23:51, , 31F
其實還是Java 因為API大部份有實作(Based on Harmony)
12/19 23:51, 31F

12/19 23:53, , 32F
只是有些底層實作可能不同 換而言之可能有別的底層Bug
12/19 23:53, 32F

12/20 00:51, , 33F
freepascal-> write one compile anywhere
12/20 00:51, 33F

12/20 01:17, , 34F
所謂跨平台是什麼意義啊,給廣大沒學過計概的講解一下吧
12/20 01:17, 34F
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 執行的程式語言,也直接受益

12/20 06:23, , 35F
cs幹嘛又跳出來讓人家笑啊......
12/20 06:23, 35F
討論就好,別這樣...0_0 ※ 編輯: GlinX (218.164.99.171), 12/20/2015 11:27:16

12/20 11:23, , 36F
單晶片理論上應該還是可以用java,只是實務上沒有人這樣做@@
12/20 11:23, 36F

12/20 11:24, , 37F
就像PC程式可以用java,但是很少人這樣開發. 自己測試結果
12/20 11:24, 37F

12/20 11:25, , 38F
同樣的功能,java記憶體可能會是C++十倍,效率上也有落差...
12/20 11:25, 38F

12/20 11:25, , 39F
語言就只是工具而已 最終還是回歸需求面吧~
12/20 11:25, 39F

12/20 11:26, , 40F
以可以應用的場景和第三方函式庫來說,投資在Java身上
12/20 11:26, 40F

12/20 11:26, , 41F
路還是比較廣的
12/20 11:26, 41F

12/20 13:50, , 42F
Java的「跨平台」光環, 在iOS上不支援那時候就已經消失
12/20 13:50, 42F

12/20 13:52, , 43F
了. 然後因為Google/Oracle間的官司, 進一步削弱Java
12/20 13:52, 43F

12/20 13:52, , 44F
"Write once, run everywhere"這賣點.
12/20 13:52, 44F

12/20 13:53, , 45F
Java一天還在Oracle手中, 要重上高峰... 難啊...
12/20 13:53, 45F

12/20 15:54, , 46F
突然想到Steve Jobs也是出了名的討厭Java
12/20 15:54, 46F

12/20 16:01, , 47F
Java 能write once compile anywhere? 前題是你如何寫
12/20 16:01, 47F

12/20 16:02, , 48F
沒這個前題, 頂多就是SUN一派, IBM 一派, HP 一派,其它
12/20 16:02, 48F

12/20 16:02, , 49F
再一派而已.
12/20 16:02, 49F

12/20 19:19, , 50F
你真的有寫過 Java 嗎...我懶得回了
12/20 19:19, 50F

12/20 19:49, , 51F
我真的沒寫過JAVA呢, 你連HP的JVM 是自已的都不知呢.
12/20 19:49, 51F

12/20 20:07, , 52F
HP自己有又如何? IBM AIX不也相同? 請問 JSR 是用來幹嘛的?
12/20 20:07, 52F

12/20 20:08, , 53F
為什麼 Java 可以同一份程式碼在 Win/Linux/Mac/AIX等等上
12/20 20:08, 53F

12/20 20:09, , 54F
面compile? 你以為它們剛好 API 都一樣? 跳針跳完了沒?
12/20 20:09, 54F

12/20 20:51, , 55F
哈....等你跟HP IBM 同時打交導再說吧.
12/20 20:51, 55F

12/20 20:52, , 56F
等你遇過SUN 在1.5了IBM 還在1.4 時再說. 哈......跳針
12/20 20:52, 56F

12/20 21:01, , 57F
推出SPEC 這種解決方案, 果然是高手. SPEC打天下呢.
12/20 21:01, 57F

12/20 21:27, , 58F
1.4就不能寫? 什麼鳥問題? JSR 倒底是啥你還沒回答我呢
12/20 21:27, 58F

12/20 21:27, , 59F
以下對跳針問題不再回應 浪費我時間
12/20 21:27, 59F

12/20 21:43, , 60F
你回去看SPEC 吧. JSR 呢.
12/20 21:43, 60F

12/20 23:35, , 61F
跨平台但不跨版本:P
12/20 23:35, 61F

12/20 23:36, , 62F
反正以後用瀏覽器都看不到java了,跨不跨平台對前端
12/20 23:36, 62F

12/20 23:36, , 63F
使用者漸漸無所謂了啦:P
12/20 23:36, 63F

12/20 23:43, , 64F
你隨便G一下都一堆同版本,不同VENDOR的問題.
12/20 23:43, 64F

12/21 00:44, , 65F
HP-UX早支援jdk8了科科 沒得用只好怪公司沒錢換
12/21 00:44, 65F

12/21 12:19, , 66F
等你去玩過再說嘴, 什麼年代, 發生什麼事, 沒遇過的人
12/21 12:19, 66F

12/21 12:20, , 67F
就可以拿早就OO, 早就XX 來說, 不然連SPEC 都搬出來了.
12/21 12:20, 67F

12/21 12:20, , 68F
SPEC這麼偉大, C 為何搞成這個德性?
12/21 12:20, 68F

12/21 12:24, , 69F
500元便當,大概就是這樣子來的了.
12/21 12:24, 69F

12/21 12:31, , 70F
喔~放飯囉
12/21 12:31, 70F

12/21 17:00, , 71F
JVM相容其實沒做得很漂亮,各廠時做的JVM也有差異
12/21 17:00, 71F

12/21 17:01, , 72F
1.4時期AIX跟SUN忘了在哪塊不一樣,踩過雷
12/21 17:01, 72F

12/21 18:10, , 73F
秒買秒退,食安喚回 http://j.mp/_ts_
12/21 18:10, 73F

12/21 19:12, , 74F
秒買秒退,食安喚回 http://j.mp/_ts_
12/21 19:12, 74F
文章代碼(AID): #1MTLYzYh (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1MTLYzYh (Soft_Job)