Re: [閒聊] 為什麼java的使用率比較高?
認真回
一個程式語言的使用率高低,可以考量以下幾點:
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
12/19 21:35, 1F
→
12/19 21:37, , 2F
12/19 21:37, 2F
→
12/19 21:38, , 3F
12/19 21:38, 3F
→
12/19 21:38, , 4F
12/19 21:38, 4F
→
12/19 21:39, , 5F
12/19 21:39, 5F
→
12/19 21:47, , 6F
12/19 21:47, 6F
→
12/19 21:50, , 7F
12/19 21:50, 7F
更正一下,應該是說,Java 在圖形程式上的 "開發",不如 VS 方便
→
12/19 21:58, , 8F
12/19 21:58, 8F
推
12/19 22:01, , 9F
12/19 22:01, 9F
→
12/19 22:01, , 10F
12/19 22:01, 10F
→
12/19 22:01, , 11F
12/19 22:01, 11F
→
12/19 22:01, , 12F
12/19 22:01, 12F
→
12/19 22:09, , 13F
12/19 22:09, 13F
推
12/19 22:12, , 14F
12/19 22:12, 14F
→
12/19 22:13, , 15F
12/19 22:13, 15F
→
12/19 22:13, , 16F
12/19 22:13, 16F
→
12/19 22:14, , 17F
12/19 22:14, 17F
→
12/19 22:15, , 18F
12/19 22:15, 18F
→
12/19 22:16, , 19F
12/19 22:16, 19F
→
12/19 22:17, , 20F
12/19 22:17, 20F
→
12/19 22:19, , 21F
12/19 22:19, 21F
Agree
工作上,很多時候並不是只會單用某一種語言,而是會全部都有可能使用到
→
12/19 22:21, , 22F
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
12/19 22:47, 24F
推
12/19 23:06, , 25F
12/19 23:06, 25F
→
12/19 23:07, , 26F
12/19 23:07, 26F
推
12/19 23:22, , 27F
12/19 23:22, 27F
→
12/19 23:29, , 28F
12/19 23:29, 28F
→
12/19 23:34, , 29F
12/19 23:34, 29F
→
12/19 23:35, , 30F
12/19 23:35, 30F
→
12/19 23:51, , 31F
12/19 23:51, 31F
→
12/19 23:53, , 32F
12/19 23:53, 32F
→
12/20 00:51, , 33F
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
12/20 06:23, 35F
討論就好,別這樣...0_0
※ 編輯: GlinX (218.164.99.171), 12/20/2015 11:27:16
推
12/20 11:23, , 36F
12/20 11:23, 36F
→
12/20 11:24, , 37F
12/20 11:24, 37F
→
12/20 11:25, , 38F
12/20 11:25, 38F
→
12/20 11:25, , 39F
12/20 11:25, 39F
推
12/20 11:26, , 40F
12/20 11:26, 40F
→
12/20 11:26, , 41F
12/20 11:26, 41F
推
12/20 13:50, , 42F
12/20 13:50, 42F
→
12/20 13:52, , 43F
12/20 13:52, 43F
→
12/20 13:52, , 44F
12/20 13:52, 44F
→
12/20 13:53, , 45F
12/20 13:53, 45F
→
12/20 15:54, , 46F
12/20 15:54, 46F
→
12/20 16:01, , 47F
12/20 16:01, 47F
→
12/20 16:02, , 48F
12/20 16:02, 48F
→
12/20 16:02, , 49F
12/20 16:02, 49F
→
12/20 19:19, , 50F
12/20 19:19, 50F
→
12/20 19:49, , 51F
12/20 19:49, 51F
→
12/20 20:07, , 52F
12/20 20:07, 52F
→
12/20 20:08, , 53F
12/20 20:08, 53F
→
12/20 20:09, , 54F
12/20 20:09, 54F
→
12/20 20:51, , 55F
12/20 20:51, 55F
→
12/20 20:52, , 56F
12/20 20:52, 56F
→
12/20 21:01, , 57F
12/20 21:01, 57F
→
12/20 21:27, , 58F
12/20 21:27, 58F
→
12/20 21:27, , 59F
12/20 21:27, 59F
噓
12/20 21:43, , 60F
12/20 21:43, 60F
推
12/20 23:35, , 61F
12/20 23:35, 61F
→
12/20 23:36, , 62F
12/20 23:36, 62F
→
12/20 23:36, , 63F
12/20 23:36, 63F
→
12/20 23:43, , 64F
12/20 23:43, 64F
推
12/21 00:44, , 65F
12/21 00:44, 65F
→
12/21 12:19, , 66F
12/21 12:19, 66F
→
12/21 12:20, , 67F
12/21 12:20, 67F
→
12/21 12:20, , 68F
12/21 12:20, 68F
→
12/21 12:24, , 69F
12/21 12:24, 69F
→
12/21 12:31, , 70F
12/21 12:31, 70F
→
12/21 17:00, , 71F
12/21 17:00, 71F
→
12/21 17:01, , 72F
12/21 17:01, 72F
推
12/21 18:10, , 73F
12/21 18:10, 73F
推
12/21 19:12, , 74F
12/21 19:12, 74F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 8 篇):
閒聊
25
81