跳到主要內容

2018 Java 開發者年度大調查

前言

會想要寫這篇文章原因是希望提供Java同好參考和讓自己熟悉的工具是否與外國的開發者做一些比較和見解.
Java Magazine年度大調查,針對全球10500的Java開發者所做調查,問卷面向包含JDK、開發工具、web 框架等,我把一些資料整理出來提供大家參考,詳細可以參考本期java magazine內容.會針對部分常見的技術和工具,以我自己的角度去詮釋,如果有問題歡迎留言討論,因為版權問題大部分只能用描述,無法全部都貼統計圖表.

JDK調查

JDK是Java語言開發、編譯、執行程式的一個必要環境,換句話說想要執行Java必須要安裝JDK套件.調查內容如下:

(1) 哪些供應商的JDK安裝在產品上面?link
由調查結果可以知道有百分之70的人會使用Oracle JDK,21%的人會使用社群版本openJDK,一些企業用戶使用IBM JDK版本約4%.因為版權問題這幾年很多人把Oracle JDK移植到openJDK為他們主要開發的版本.

(2)哪些JVM語言為主要開發應用程式link
大部分開發者還是會使用Java為主要的開發語言,其他語言Clojure(3%)、Kotlin(2.24%)、Groovy(2.36%)、Scala(1.83%)這些因為各自有專門領域所以還有部分使用者在使用.例Kotlin可以支援開發行動APP、Scala著名的Spark大數據處理工具.

工具

整個軟體分析、設計、實作、測試到上線都有對應的工具,本次調查著重實作和測試所使用的工具或是框架,這些工具開發者容易部署與進行模擬測試.

(1) 開發者最長使用的IDElink
最多人使用前三名依序Intellj IDEA(45%)、Eclipse IDE(38%)、Apace Netbeans(11%),其中Intellj IDEA Ultimate Edition版本為需要付費有32%;Intellj IDEA Community Edition免費版本為11%;其他為Android開發者約2%.其他IDE開發工具沒有太大的變化.

(2)那些建構工具是主要使用link
開發團隊對專案主要使用的建構工具,是最多人在使用它,Maven仍有60%比例在使用,其次就是Gradle(19%)的人使用,我想應該是Andorid stodio建構工具預設為Gradle和Gradle也支援kotlin腳本關係,才有近年有大幅度的人開始使用.

(3)靜態程式碼品質工具(static quality tool)調查link
在Java有很多開源的品質工具可以用來檢查程式碼品質的好壞,這些工具最多人使用比例依次有SonarQnbe(39%)、FindBug(27%)、CheckStyle(23%),但是也多達36%的開發者沒有使用過此類的工具,來為他們的程式碼檢驗過.

(4)CI/CD工具調查link
CI工具是為了完成持續整合或是持續交付的目標,所發展的工具,這讓你的專案可以減少煩雜的部署工作,在調查結果顯示Jenkins高達57%開發者使用,但是也有21%的人未使用過CI的工具.

(5)源碼版本管理工具link
目前最多人使用源碼版本管理工具為Git高達74%的人使用,表示滿開發者使用Git來管理他們的源碼,其次為Subversion有16%比例的人在使用它.

(6)測試框架調查link
本調查為複選選項,因為測試框架不同使用的情境也會不一樣,這些測試框架有時候可以互相搭配使用,在單元測試JUnit(78%)最多人使用的單元測試框架,在眾多模擬測試框架當中Mockito(45%)也是多人推崇,補充一點JUnit和Mockito可以互相搭配使用.在Web測試框架中Selenium(29%)的人使用.

雲端技術

(1)虛擬技術調查link
為了因應新的技術serverless的誕生,容器框架使用比例高達43%,但是仍有VMs有33%仍在使用,和33%沒使用過雲端的工具

(2)部署方法調查link
本次調查有43%的人沒有使用過自動部署工具,有18%沒有聽過這種方式,大多數人使用批次bash的方式來部署他們的程式碼,約12%,只有一些公司或是開發者才會使用CD的工具像Ansible(12%)、Chef(5%)、Puppet(8%)完成部署上線工作.

應用程式開發

(1)web框架調查link
Spring的生態已經佔領高達76%(spring boot 和spring MVC)比例的人都會使用來開發web應用程式,官方JSF也有19%的人來使用

(2)ORM框架調查(複選)link
超過1/2的開發者使用Hibernate框架來處理資料存取的部分,但是仍有23%的人喜愛用原生JDBC使用,Spring開發者有些會使用Spring JdbcTemplate來存取資料庫.也有1/4沒有使用任何ORM的框架

(3)Web Server調查link
目前最受歡迎的網頁伺服器為Apache Tomcat(41%),他主要流行的原因為快速、穩定、開源.在企業版方面WebLogic(6%)和WebSphere(5%)還是Web Logic比較多企業在使用.

(4)最常在哪裡取的Java的技術資訊(複選)link
開發者最常取的技術資訊:Stack Overflow(62%)、Oracle’s document(41%)、Java Magazine(38%)、DZone(32%)、Youtube(24%),這些可以提供大家參考節省開發時遇到的問題或是技術上資訊容易取得.

參考

  1. java magazine
  2. JDK維基百科

留言

這個網誌中的熱門文章

GSON基礎教學

GSON 前言 JSON是很常見的資料交換格式,在JAVA領域常用處理JSON的函式庫:GSON、FastXML和JSON-B,本章節會以GSON為主,學習目標如下 JSON格式說明 GSON 套件函式 GSON: 物件轉換JSON字串 GSON: JSON字串轉換物件 JSON 格式說明 JSON全名為JavaScript Object Notation,它是一種輕量級的資料交換格式,會大為流行的理由,主要是他比傳統用xml更輕巧且容易處理, JSON表達方式物件會用大括弧{},陣列則是用中括號[]。 用JSON字串來表達Employee的物件內容,由JSON字串可以知道物件name、age、sex和salary屬性。 JSON表示員工資料方式: {“name”:”Jack Bryant”, “age”:18, “sex”:”M”,”salary”:3500.00} JSON陣列表示方式: 跟我們使用JAVA的陣列方式類似,內容值可以是數字’、文字、布林、陣列、物件、null等等。 範例: 字串: [“紅”、”橙”、”黃”、”綠”、”青”、”藍”、”紫”} 布林: [true, true, false, false, true, true] GSON 套件函式 Gson為google所發布的函式庫,主要將物件與json字串之間的轉換時方便使用。當我們將JAVA物件轉換成JSON字串稱為 序列化 ,JSON字串轉換至JAVA物件稱為 反序列化 。 GSON: 物件轉換JSON字串 有了JSON基本概念後,我們進入本章重點,首先我們需要建立員工類別(Employee),定義如下 物件 屬性 員工類別 Employee name 名字 age 年紀 sex 性別 salary 薪水 /** * name:員工類別 */ public class Employee implements Serializable { //constructor public Employee(String name, double salary){ this.name = name; this.sala...

PHP與Python搭配

今天介紹如何利用php網頁呼叫目錄下的python程式工作或是資料交換,本人整理的方法有兩種 使用system()、exec()、shell_exec()呼叫程式 (1) string system ( string return_var ] ) 參考網址 官網解釋system()用來執行外部命令,返回為印出的結果,passthru()跟system()類似但是它不會返回結果。 範例1. 利用system執行ls指定並顯示在網頁上,無法使用變數保留ls的結果 檔案名稱: psystem.php $jsondata= system("ls -al", $result); 結果: (2) exec() : string exec ( string output [, int &$return_var ]] ) 參考網址 範例2. 利用exec執行python程式並可以回傳json格式給前端網頁做處理並顯示。我們ptopy.php就是可以看到callpy()為執行py的函式,它執行完pyEx01.py會將結果給$jsondata變數,做後面json解析。 檔案名稱: ptopy.php function callpy() { $jsondata= exec("/usr/bin/python pyEx01.py"); return $jsondata ; } $jsondata= callpy(); echo $jsondata ; echo " " ; $obj = json_decode($jsondata) ; echo "name:".$obj-> { 'name'} .',' ; echo "id:".$obj-> { 'id'} ; 檔案名稱: pyEx01.py import sys ...

Python AI-問題集

Python AI-問題集 問題集 Jupyter Notebook執行ipywidgets會出現kernel死掉的錯誤發生(The kernel appears to have died) 解決方法 (1) 根據log檔來判斷問題: 例如:log訊息出現OMP: Error #15: Initializing libiomp5.dylib, but found libiomp5.dylib already initialized. (2) 根據問題關鍵字找出問題所在: 利用google查詢所遭遇到的問題,例如我把上面的問題上google查詢可以找到這篇的解法 https://blog.csdn.net/bingjianIT/article/details/86182096 (3)實作解法: 我實作下面解法後,就可以順利執行手寫辨識的程式. //在Python宣告時加入 import os os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE" 參考 https://blog.csdn.net/bingjianIT/article/details/86182096