跳到主要內容

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維基百科

留言

這個網誌中的熱門文章

JavaBean 和POJO

前言 今天介紹JavaBean和POJO的不同,這兩個名詞在JAVA文章常常被拿來使用以及討論。在JDK1.1時候釋出才有的一個標準架構,很多時候常常被搞混,所以我們特別開闢一章來加以討論。POJO規範在企業級應用已經廣大的被使用的規範。 解釋 POJO : 全名為Plain-old-Java-object,只需要繼承Object就可以,沒有特定規定,只要建立的類別有setter/getter方法都可以稱為POJO JavaBean: JavaBean通常用來封裝多個物件成為單獨物件使用,規範比較嚴格,規則如下 規則 說明 1 需要實作序列(Serializable/Externalizable) 2 不能有參數的建構子( no-arg constructor) 3 需要有公用setter/getter 4 屬性必須要私人(private) 5 屬於特定POJO規則 比較 所有的JavaBean都為POJO,但是所有的POJO不一定為JavaBean 都可以當作重複元件 都必須序列化 特性都為可用性、易用性和持久化使用 - 應用 由圖我們可以知道POJO在應用程式中,主要用來存取資料庫資料達到持久化的目的,並提供給商業邏輯流程處理使用。這種POJO的架構提供程式人員開發時的可以很有規則將資料封裝並加以使用。 範例1. JavaBean(以員工為實例) JavaBean建立員工物件,可以發現Employee物件建構子沒有任何參數,屬性為私有化並setter/getter的命名方式。 //實作序列化 public class Employee implements java.io.Serializable{ private int id; private String name; //無參數建構子 public Employee(){} //以下實作setter/getter public void setId(int id){this.id=id;} public int getId(){return id;} public void setName(String ...

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...

H2資料庫(1)-基本安裝與介紹

H2資料庫介紹 H2為嵌入式資料庫,使用java開發,跨平台且內含資料庫管理介面,好處開發階段方便開發人員使用。 比較 詳細比較表: http://www.h2database.com/html/features.html#comparison 由圖比較可以知道,H2比其他資料庫更為優勢,以下會介紹開發時常用的模式: 嵌入式模式Embedded Mode 嵌入式資料庫會與應用程式共用同一JVM底層,在這個模式下persistent或是in-memory資料庫都支援,也沒有連線數的限制。但壞處是只可以給該應用程式使用,其他人無法直接存取資料庫。 伺服器模式 Server Mode 外部應用程式可以藉由JDBC或是OBC的方式連結該資料庫,它也支援persistent或是in-memory資料庫,也沒有連線數的限制。 混合模式 Mixed Mode 同時有嵌入式與伺服器的模式去讓外部應用程式連線或是自己應用程式連線。 安裝H2 database 官方網站: http://www.h2database.com/html/main.html 下載安裝程式 出現安裝連結,本次範例使用 Windows installer 的安裝連結 下載安裝程式後,點擊兩下,進入安裝畫面,按”下一步” 一直按”下一步”後,會出現”完成” 安裝完成後,會出現一個說明網頁,你可以點選Quickstart 它會告訴你,如何進入DBRMS畫面以及開啟資料庫服務 開啟windows的視窗圖示,執行 H2 Console後,會執行H2資料庫 進入DBRMS的登入畫面,使用者預設為”SA”,密碼為空值”“,按下”connect”進入,SQL命令中心 登入後,可以在空白處執行SQL語法 8.大致上安裝H2資料庫滿快速,操作畫面也是很好上手,如果系統在開發階段個人覺的滿推薦給大家使用看看。 參考 H2官方網站