原文鏈接: "Java軟體工程師技能圖譜" 最近在考慮“擁有怎樣的技能才能算一名合格的java軟體工程師呢?”這個問題。碰巧在github發現一個很棒的開源項目 "程式員技能圖譜" 。 "@Zhang Wei" 寫的 "Java Software Engineer Skill Map" 確實能解答我 ...
原文鏈接:Java軟體工程師技能圖譜
最近在考慮“擁有怎樣的技能才能算一名合格的java軟體工程師呢?”這個問題。碰巧在github發現一個很棒的開源項目--程式員技能圖譜。@Zhang Wei寫的Java Software Engineer Skill Map確實能解答我心中的疑問。好的東西應該向更多的人,我將英文版本根據自己的理解寫成中文版,並補充了相應的學習資料(書籍是可下載的,中文書籍可能存在版權問題,推薦書籍都是比較經典的英文教材)。希望這次整理能幫助更多的人解答心中的疑惑。
Core Java
- Java The Complete Reference Ninth Edition.pdf
- 核心
- 基礎知識
- 數據類型
- 語法
- 控制流
- 面向對象
- 類
- 對象
- 方法
- 介面
- 繼承
- 雜項?(
Miscellaneous
應該就是不能準確歸類的分成一類)- 泛型
- 自動裝箱
- 枚舉
- 註解
- 並行
- 多線程編程
- 函數式編程
- Lambda 表達式
- Stream API
- 基礎知識
- 常用庫
- 字元串處理
- java.lang.String
- StringBuffer 和 StringBuilder
- 正則表達式
- java.lang.* (裡面包含java語言基礎類)
- java.util.*
- Collections框架
- Concurrency框架(包含許多線程安全、測試良好、高性能的併發構建塊)
- i18n 或者 g11n(國際化)
- Currency
- Data & Time
- Language Locale
- 其他工具類(
Miscellaneous Utilities
, 如base64,DoubleSummaryStatistics等等)
- java.io.* (包含I/O相關類)
- java.nio.*(包含非同步I/O相關類)
- java.net.*(網路編程)
- java.rmi.*(RMI編程,RMI,即Java Remote Method Invocation 是Java編程語言里,一種用於實現遠程過程調用的應用程式編程介面。)
- java.sql.*(jdbc2.0之前的東西)
- javax.sql.*(包括了jdbc3.0的特性)
- 字元串處理
- 核心
演算法 & 數據結構
- 演算法 *
- 推薦書籍,Robert Sedgewick,Kevin Wayne寫的 演算法 (英文第四版)
- 數據結構 *
- 推薦書籍同上
- 面向對象編程 *
- Head First設計模式(Head First Design Patterns)
- Effective Java 2nd Edition
- 電腦架構
- 推薦書籍,Computer Architecture - A Quantitative Approach (Fifth Edition)
- 記憶體層次結構,參考Computer Systems: A Programmer's Perspective, 3/E (CS:APP3e)中的《Chapter 6: The Memory Hierarchy》
- 並行
- 多處理器系統
- 操作系統
- 推薦書籍,Abraham Silberschatz/Peter Baer Galvin/Greg Gagne的《Operating System Concepts 9th》
- 記憶體管理,Cornell University的CS 412/413 Introduction to Compilers Spring 2008中的Memory Management
- 記憶體進程管理
- 記憶體文件系統 *
- 電腦網路
- 推薦書籍,ANDREW S. TANENBAUM/DAVID J. WETHERALL《Computer Network Fifth Edition》
- OSI模型
- TCP/IP協議
- HTTP/HTTPS協議
- HTTP1.X/HTTP2協議
要點
- Linux/Unix
- Shell命令(bash)
- 文本處理
- AWK/SED
- 文件操作
- cd/ls/find/ (管道和I/O重定向)
- 文本處理
- VIM/Emacs(其中一個)
- Shell腳本(bash)
- Shell命令(bash)
- Java常用第三方庫
- 日誌
- 單元測試
- 代碼覆蓋率(單元測試覆蓋率)
- Apache Commons
- commons-io
- commons-lang
- commons-math
- commons-codec
- commons-collections
- commons-beanutils
- commons-logging
- ...
- Apache HttpComponents(專註於http及其相關協議)
- Google Guava,Guava工程包含了若幹被Google的 Java項目廣泛依賴 的核心庫。
- 軟體工程
前端 (Web)
- Web開發 http://www.w3schools.com
- HTML
- HTML4
- xhtml
- HTML5
- css
- css2
- CSS3
- Data Representation
- XML
- JSON
- JSONP
- Javascript
+ ECMAScript 6- Basics
- Ajax
- AngularJS (plus)
- JQuery (plus)
- TypeScript
- Responsive Web Page development (plus)
- HTML
後端開發(服務端)
- JavaEE
- 詳細參考資料:http://www.oracle.com/technetwork/java/javaee/tech/index.html
- JSP *
- JSTL
- Java Servlet *
- JavaServer Faces(一個為網路應用程式構建基於組件的用戶界面的Java規範) *
- JPA(Java持久層API) *
- JTA(Java事務API)*
- JAX-RS(Java API for RESTful Web Services)*
- Managed Beans / CDI 1.1/ DI /IOC
- Bean Validation
- JAX-WS
- JavaMail
- JACC
- JASPIC
- Java WebSocket
- Java JSON Processing
- Concurrency Utilities for JavaEE
- Batch processing framework
- Java容器
- Java中間件
- Spring
- Spring-Framework (依賴註入&面向切麵編程)
- Spring-Web
- Spring-Data
- Spring-security
- Spring-boot (微服務架構)
- Struts(MVC)
- SpringMVC
- Hibernate/JPA (數據持久化),Spring Data JPA(可選)
- MyBatis
- Spring
- JAVA性能調優
- 資料庫
- 序列化
- Google protobuf,Google 公司內部的混合語言數據標準,用於 RPC 系統和持續數據存儲系統
- Apache Avro,Avro是一種遠程過程調用和數據序列化框架,是在Apache的Hadoop項目之內開發的
- Java遠程調用(RPC)
- Apache Thrift, Facebook開發的遠程服務調用框架
- Motan
- 消息隊列
- 消息
- XMPP(Extensible Messaging and Presence Protocol)
- MQTT
- Web Sockets
- 搜索和索引
- Apache Lucene
- Apache Solr
- Elasticsearch,全文搜索引擎,底層是lucene,但是無法直接使用
- CoreNLP,Stanford開發的一套開源的NLP(自然語言處理)系統
- 大數據(可選,有興趣的可以深究)
- Hadoop
- Yarn (MapReduce)
- HDFS
- HBase
- Hive
- Mahout
- Spark
- Spark-Core
- Spark-SQL
- Spark-machine learning
- Spark Streaming
- Apache Storm
- Hadoop
- 雲
- 可擴展架構
- 親自實踐
- Amazon AWS
- EC2
- S3
- DynamoDB
- Amazon AWS
- 基於JVM的編程語言
- Scala
- Groovy
- Clojure
- Kotlin
IDE
- IntelliJ IDEA,極力推薦這個
- NetBeans
- Eclipse
桌面開發
- awt
- Applet
- swing
- Netbeans Platform
- JavaFX
- swt
移動開發
- Android
- JavaME
參考資料
@Zhang Wei Java Software Engineer Skill Map