趣模板源碼
Bazel:來自Google的構建工具,可以快速、可靠地構建代碼。官網
Gradle:使用Groovy(非XML)進行增量構建,可以很好地與Maven依賴管理配合工作。官網
Buck:Facebook構建工具。官網
ASM:通用底層位元組碼操作和分析開發庫。官網
Byte Buddy:使用流式API進一步簡化位元組碼生成。官網
Byteman:在運行時通過DSL(規則)操作位元組碼進行測試和故障排除。官網
Javassist:一個簡化位元組碼編輯嘗試。官網
Apache Aurora:Apache Aurora是一個Mesos框架,用於長時間運行服務和定時任務(cron job)。官網
Singularity:Singularity是一個Mesos框架,方便部署和操作。它支持Web Service、後台運行、調度作業和一次性任務。官網
Checkstyle:代碼編寫規范和標准靜態分析工具。官網
Error Prone:將常見編程錯誤作為運行時錯誤報告。官網
FindBugs:通過位元組碼靜態分析查找隱藏bug。官網
jQAssistant:使用基於Neo4J查詢語言進行代碼靜態分析。官網
PMD:對源代碼分析查找不良的編程習慣。官網
SonarQube:通過插件集成其它分析組件,對過去一段時間內的數據進行統計。官網
ANTLR:復雜的全功能自頂向下解析框架。官網
JavaCC:JavaCC是更加專門的輕量級工具,易於上手且支持語法超前預測。官網
config:針對JVM語言的配置庫。官網
owner:減少冗餘配置屬性。官網
Choco:可直接使用的約束滿足問題求解程序,使用了約束規劃技術。官網
JaCoP:為FlatZinc語言提供了一個介面,可以執行MiniZinc模型。官網
OptaPlanner:企業規劃與資源調度優化求解程序。官網
Sat4J:邏輯代數與優化問題最先進的求解程序。官網
Bamboo:Atlassian解決方案,可以很好地集成Atlassian的其他產品。可以選擇開源許可,也可以購買商業版。官網
CircleCI:提供託管服務,可以免費試用。官網
Codeship:提供託管服務,提供有限的免費模式。官網
fabric8:容器集成平台。官網
Go:ThoughtWork開源解決方案。官網
Jenkins:支持基於伺服器的部署服務。官網
TeamCity:JetBrain的持續集成解決方案,有免費版。官網
Travis:通常用作開源項目的託管服務。官網
Buildkite: 持續集成工具,用簡單的腳本就能設置pipeline,而且能快速構建,可以免費試用。官網
uniVocity-parsers:速度最快功能最全的CSV開發庫之一,同時支持TSV與固定寬度記錄的讀寫。官網
Apache Phoenix:HBase針對低延時應用程序的高性能關系資料庫層。官網
Crate:實現了數據同步、分片、縮放、復制的分布式數據存儲。除此之外還可以使用基於SQL的語法跨集群查詢。官網
Flyway:簡單的資料庫遷移工具。官網
H2:小型SQL資料庫,以可以作為內存資料庫使用著稱。官網
HikariCP:高性能JDBC連接工具。官網
JDBI:便捷的JDBC抽象。官網
Protobuf:Google數據交換格式。官網
SBE:簡單二進制編碼,是最快速的消息格式之一。官網
Wire:整潔輕量級協議緩存。官網
Apache DeltaSpike:CDI擴展框架。官網
Dagger2:編譯時注入框架,不需要使用反射。官網
Guice:可以匹敵Dagger的輕量級注入框架。官網
HK2:輕量級動態依賴注入框架。官網
ADT4J:針對代數數據類型的JSR-269代碼生成器。官網
AspectJ:面向切面編程(AOP)的無縫擴展。官網
Auto:源代碼生成器集合。官網
DCEVM:通過修改JVM在運行時支持對已載入的類進行無限次重定義。官網
HotswapAgent:支持無限次重定義運行時類與資源。官網
Immutables:類似Scala的條件類。官網
JHipster:基於Spring Boot與AngularJS應用程序的Yeoman源代碼生成器。官網
JRebel:無需重新部署,可以即時重新載入代碼與配置的商業軟體。官網
Lombok:減少冗餘的代碼生成器。官網
Spring Loaded:類重載代理。官網
vert.x:多語言事件驅動應用框架。官網
Akka:用來編寫分布式容錯並發事件驅動應用程序的工具和運行時。官網
Apache Storm:實時計算系統。官網
Apache ZooKeeper:針對大型分布式系統的協調服務,支持分布式配置、同步和名稱注冊。官網
Hazelcast:高可擴展內存數據網格。官網
Hystrix:提供延遲和容錯。官網
JGroups:提供可靠的消息傳遞和集群創建的工具。官網
Orbit:支持虛擬角色(Actor),在傳統角色的基礎上增加了另外一層抽象。官網
Quasar:為JVM提供輕量級線程和角色。官網
Apache Cassandra:列式資料庫,可用性高且沒有單點故障。官網
Apache HBase:針對大數據的Hadoop資料庫。官網
Druid:實時和歷史OLAP數據存儲,在聚集查詢和近似查詢方面表現不俗。官網
Infinispan:針對緩存的高並發鍵值對數據存儲。官網
Bintray:發布二進制文件版本控制工具。可以於Maven或Gradle一起配合使用。提供開源免費版本和幾種商業收費版本。官網
Central Repository:最大的二進制組件倉庫,面向開源社區提供免費服務。Apache Maven默認使用Central官網Repository,也可以在所有其他構建工具中使用。
IzPack:為跨平台部署建立創作工具(Authoring Tool)。官網
JitPack:打包GitHub倉庫的便捷工具。可根據需要構建Maven、Gradle項目,發布可立即使用的組件。官網
Launch4j:將JAR包裝為輕量級本機Windows可執行程序。官網
Nexus:支持代理和緩存功能的二進制管理工具。官網
packr:將JAR、資源和JVM打包成Windows、Linux和Mac OS X本地發布文件。官網
Apache POI:支持OOXML規范(XLSX、DOCX、PPTX)以及OLE2規范(XLS、DOC、PPT)。官網
documents4j:使用第三方轉換器進行文檔格式轉換,轉成類似MS Word這樣的格式。官網
jOpenDocument:處理OpenDocument格式(由Sun公司提出基於XML的文檔格式)。官網
Cyclops:支持一元(Monad)操作和流操作工具類、comprehension(List語法)、模式匹配、trampoline等特性。官網
Fugue:Guava的函數式編程擴展。官網
Functional Java:實現了多種基礎和高級編程抽象,用來輔助面向組合開發(composition-oriented development)。官網
Javaslang:一個函數式組件庫,提供持久化數據類型和函數式控制結構。官網
jOOλ:旨在填補Java 8 lambda差距的擴展,提供了眾多缺失的類型和一組豐富的順序流API。官網
jMonkeyEngine:現代3D游戲開發引擎。官網
libGDX:全面的跨平台高級框架。官網
LWJGL:對OpenGL/CL/AL等技術進行抽象的健壯框架。官網
JavaFX:Swing的後繼者。官網
Scene Builder:開發JavaFX應用的可視化布局工具。官網
Agrona:高性能應用中常見的數據結構和工具方法。官網
Disruptor:線程間消息傳遞開發庫。官網
fastutil:快速緊湊的特定類型集合(Collection)。官網
GS Collections:受Smalltalk啟發的集合框架。官網
HPPC:基礎類型集合。官網
Javolution:實時和嵌入式系統的開發庫。官網
JCTools:JDK中缺失的並發工具。官網
Koloboke:Hash set和hash map。官網
Trove:基礎類型集合。官網
High-scale-bli:Cliff Click 個人開發的高性能並發庫官網
Eclipse:老牌開源項目,支持多種插件和編程語言。官網
IntelliJ IDEA:支持眾多JVM語言,是安卓開發者好的選擇。商業版主要針對企業客戶。官網
NetBeans:為多種技術提供集成化支持,包括Java SE、Java EE、資料庫訪問、HTML5
Imgscalr:純Java 2D實現,簡單、高效、支持硬體加速的圖像縮放開發庫。官網
Picasso:安卓圖片下載和圖片緩存開發庫。官網
Thumbnailator:Thumbnailator是一個高質量Java縮略圖開發庫。官網
ZXing:支持多種格式的一維、二維條形碼圖片處理開發庫。官網
im4java: 基於ImageMagick或GraphicsMagick命令行的圖片處理開發庫,基本上ImageMagick能夠支持的圖片格式和處理方式都能夠處理。官網
Apache Batik:在Java應用中程序以SVG格式顯示、生成及處理圖像的工具集,包括SVG解析器、SVG生成器、SVG DOM等模塊,可以集成使用也可以單獨使用,還可以擴展自定義的SVG標簽。官網
Genson:強大且易於使用的Java到JSON轉換開發庫。官網
Gson:谷歌官方推出的JSON處理庫,支持在對象與JSON之間雙向序列化,性能良好且可以實時調用。官網
Jackson:與GSON類似,在頻繁使用時性能更佳。官網
LoganSquare:基於Jackson流式API,提供對JSON解析和序列化。比GSON與Jackson組合方式效果更好。官網
Fastjson:一個Java語言編寫的高性能功能完善的JSON庫。官網
Kyro:快速、高效、自動化的Java對象序列化和克隆庫。官網
JDK 9:JDK 9的早期訪問版本。官網
OpenJDK:JDK開源實現。官網
Scala:融合了面向對象和函數式編程思想的靜態類型編程語言。官網
Groovy:類型可選(Optionally typed)的動態語言,支持靜態類型和靜態編譯。目前是一個Apache孵化器項目。官網
Clojure:可看做現代版Lisp的動態類型語言。官網
Ceylon:RedHat開發的面向對象靜態類型編程語言。官網
Kotlin:JetBrain針對JVM、安卓和瀏覽器提供的靜態類型編程語言。官網
Xtend:一種靜態編程語言,能夠將其代碼轉換為簡潔高效的Java代碼,並基於JVM運行。官網
Apache Log4j 2:使用強大的插件和配置架構進行完全重寫。官網
kibana:分析及可視化日誌文件。官網
Logback:強健的日期開發庫,通過Groovy提供很多有趣的選項。官網
logstash:日誌文件管理工具。官網
Metrics:通過JMX或HTTP發布參數,並且支持存儲到資料庫。官網
SLF4J:日誌抽象層,需要與具體的實現配合使用。官網
Apache Flink:快速、可靠的大規模數據處理引擎。官網
Apache Hadoop:在商用硬體集群上用來進行大規模數據存儲的開源軟體框架。官網
Apache Mahout:專注協同過濾、聚類和分類的可擴展演算法。官網
Apache Spark:開源數據分析集群計算框架。官網
DeepDive:從非結構化數據建立結構化信息並集成到已有資料庫的工具。官網
Deeplearning4j:分布式多線程深度學習開發庫。官網
H2O:用作大數據統計的分析引擎。官網
Weka:用作數據挖掘的演算法集合,包括從預處理到可視化的各個層次。官網
QuickML:高效機器學習庫。官網、GitHub
Aeron:高效可擴展的單播、多播消息傳遞工具。官網
Apache ActiveMQ:實現JMS的開源消息代理(broker),可將同步通訊轉為非同步通訊。官網
Apache Camel:通過企業級整合模式(Enterprise Integration Pattern EIP)將不同的消息傳輸API整合在一起。官網
Apache Kafka:高吞吐量分布式消息系統。官網
Hermes:快速、可靠的消息代理(Broker),基於Kafka構建。官網
JBoss HornetQ:清晰、准確、模塊化,可以方便嵌入的消息工具。官網
JeroMQ:ZeroMQ的純Java實現。官網
Smack:跨平台XMPP客戶端函數庫。官網
Openfire:是開源的、基於XMPP、採用Java編程語言開發的實時協作伺服器。 Openfire安裝和使用都非常簡單,並可利用Web界面進行管理。官網GitHub
Spark:是一個開源,跨平台IM客戶端。它的特性支持集組聊天,電話集成和強大安全性能。如果企業內部部署IM使用Openfire+Spark是最佳的組合。官網GitHub
Tigase: 是一個輕量級的可伸縮的 Jabber/XMPP 伺服器。無需其他第三方庫支持,可以處理非常高的復雜和大量的用戶數,可以根據需要進行水平擴展。官網
Design Patterns:實現並解釋了最常見的設計模式。官網
Jimfs:內存文件系統。官網
Lanterna:類似curses的簡單console文本GUI函數庫。官網
LightAdmin:可插入式CRUD UI函數庫,可用來快速應用開發。官網
OpenRefine:用來處理混亂數據的工具,包括清理、轉換、使用Web Service進行擴展並將其關聯到資料庫。官網
RoboVM:Java編寫原生iOS應用。官網
Quartz:強大的任務調度庫.官網
AppDynamics:性能監測商業工具。官網
JavaMelody:性能監測和分析工具。官網
Kamon:Kamon用來監測在JVM上運行的應用程序。官網
New Relic:性能監測商業工具。官網
SPM:支持對JVM應用程序進行分布式事務追蹤的性能監測商業工具。官網
Takipi:產品運行時錯誤監測及調試商業工具。官網
JNA:不使用JNI就可以使用原生開發庫。此外,還為常見系統函數提供了介面。官網
Apache OpenNLP:處理類似分詞等常見任務的工具。官網
CoreNLP:斯坦佛CoreNLP提供了一組基礎工具,可以處理類似標簽、實體名識別和情感分析這樣的任務。官網
LingPipe:一組可以處理各種任務的工具集,支持POS標簽、情感分析等。官網
Mallet:統計學自然語言處理、文檔分類、聚類、主題建模等。官網
Async Http Client:非同步HTTP和WebSocket客戶端函數庫。官網
Grizzly:NIO框架,在Glassfish中作為網路層使用。官網
Netty:構建高性能網路應用程序開發框架。官網
OkHttp:一個Android和Java應用的HTTP+SPDY客戶端。官網
Undertow:基於NIO實現了阻塞和非阻塞API的Web伺服器,在WildFly中作為網路層使用。官網
Ebean:支持快速數據訪問和編碼的ORM框架。官網
EclipseLink:支持許多持久化標准,JPA、JAXB、JCA和SDO。官網
Hibernate:廣泛使用、強健的持久化框架。Hibernate的技術社區非常活躍。官網
MyBatis:帶有存儲過程或者SQL語句的耦合對象(Couples object)。官網
OrmLite:輕量級開發包,免除了其它ORM產品中的復雜性和開銷。官網
Nutz:另一個SSH。官網,Github
JFinal:JAVA WEB + ORM框架。官網,Github
Apache FOP:從XSL-FO創建PDF。官網
Apache PDFBox:用來創建和操作PDF的工具集。官網
DynamicReports:JasperReports的精簡版。官網
flyingsaucer:XML/XHTML和CSS 2.1渲染器。官網
iText:一個易於使用的PDF函數庫,用來編程創建PDF文件。注意,用於商業用途時需要許可證。官網
JasperReports:一個復雜的報表引擎。官網
jHiccup:提供平台中JVM暫停的日誌和記錄。官網
JMH:JVM基準測試工具。官網
JProfiler:商業分析器。官網
LatencyUtils:測量和報告延遲的工具。官網
VisualVM:對運行中的應用程序信息提供了可視化界面。官網
YourKit Java Profiler:商業分析器。官網
Reactive Streams:非同步流處理標准,支持非阻塞式反向壓力(backpressure)。官網
Reactor:構建響應式快速數據(fast-data)應用程序的開發庫。官網
RxJava:通過JVM可觀察序列(observable sequence)構建非同步和基於事件的程序。官網
Dropwizard:偏向於自己使用的Web框架。用來構建Web應用程序,使用了Jetty、Jackson、Jersey和Metrics。官網
Feign:受Retrofit、JAXRS-2.0和WebSocket啟發的HTTP客戶端連接器(binder)。官網
Jersey:JAX-RS參考實現。官網
RESTEasy:經過JAX-RS規范完全認證的可移植實現。官網
RestExpress:一個Java類型安全的REST客戶端。官網
RestX:基於註解處理和編譯時源碼生成的框架。官網
Retrofit:類型安全的REST客戶端。官網
Spark:受到Sinatra啟發的Java REST框架。官網
Swagger:Swagger是一個規范且完整的框架,提供描述、生產、消費和可視化RESTful Web Service。官網
Blade:國人開發的一個輕量級的MVC框架. 它擁有簡潔的代碼,優雅的設計。官網
DataMelt:用於科學計算、數據分析及數據可視化的開發環境。官網
JGraphT:支持數學圖論對象和演算法的圖形庫。官網
JScience:用來進行科學測量和單位的一組類。官網
Apache Solr:一個完全的企業搜索引擎。為高吞吐量通信進行了優化。官網
Elasticsearch:一個分布式、支持多租戶(multitenant)全文本搜索引擎。提供了RESTful Web介面和無schema的JSON文檔。官網
Apache Lucene:是一個開放源代碼的全文檢索引擎工具包,是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎。官網
Apache Shiro:執行認證、授權、加密和會話管理。官網
Bouncy Castle,涵蓋了從基礎的幫助函數到PGP/SMIME操作。官網:多途加密開發庫。支持JCA提供者(JCA provider)
Cryptomator:在雲上進行客戶端跨平台透明加密。官網
Keycloak:為瀏覽器應用和RESTful Web Service集成SSO和IDM。目前還處於beta版本,但是看起來非常有前途。官網
PicketLink:PicketLink是一個針對Java應用進行安全和身份認證管理的大型項目(Umbrella Project)。官網
FlatBuffers:高效利用內存的序列化函數庫,無需解包和解析即可高效訪問序列化數據。官網
Kryo:快速、高效的對象圖形序列化框架。官網
FST:提供兼容JDK的高性能對象圖形序列化。官網
MessagePack:一種高效的二進制序列化格式。官網
Apache Tomcat:針對Servlet和JSP的應用伺服器,健壯性好且適用性強。官網
Apache TomEE:Tomcat加Java EE。官網
Jetty:輕量級、小巧的應用伺服器,通常會嵌入到項目中。官網
WebSphere Liberty:輕量級、模塊化應用伺服器,由IBM開發。官網
WildFly:之前被稱作JBoss,由Red Hat開發。支持很多Java EE功能。官網
Apache Velocity:提供HTML頁面模板、email模板和通用開源代碼生成器模板。官網
FreeMarker:通用模板引擎,不需要任何重量級或自己使用的依賴關系。官網
Handlebars.java:使用Java編寫的模板引擎,邏輯簡單,支持語義擴展(semantic Mustache)。官網
Thymeleaf:旨在替換JSP,支持XML文件的工具。官網
Apache JMeter:功能性測試和性能評測。官網
Arquillian:集成測試和功能行測試平台,集成Java EE容器。官網
AssertJ:支持流式斷言提高測試的可讀性。官網
Awaitility:用來同步非同步操作的DSL。官網
Cucumber:BDD測試框架。官網
Gatling:設計為易於使用、可維護的和高性能負載測試工具。官網
Hamcrest:可用來靈活創建意圖(intent)表達式的匹配器。官網
JMockit:用來模擬靜態、final方法等。官網
JUnit:通用測試框架。官網
Mockito:在自動化單元測試中創建測試對象,為TDD或BDD提供支持。官網
PowerMock: 支持模擬靜態方法、構造函數、final類和方法、私有方法以及移除靜態初始化器的模擬工具。官網
REST Assured:為REST/HTTP服務提供方便測試的Java DSL。官網
Selenide:為Selenium提供精準的周邊API,用來編寫穩定且可讀的UI測試。官網
Selenium:為Web應用程序提供可移植軟體測試框架。官網
Spock:JUnit-compatible framework featuring an expressive Groovy-derived specification language.官網兼容JUnit框架,支持衍生的Groovy范的語言。
TestNG:測試框架。官網
Truth:Google的斷言和命題(proposition)框架。官網
Unitils:模塊化測試函數庫,支持單元測試和集成測試。官網
WireMock:Web Service測試樁(Stub)和模擬函數。官網
Apache Commons:提供各種用途的函數,比如配置、驗證、集合、文件上傳或XML處理等。官網
args4j:命令行參數解析器。官網
CRaSH:為運行進行提供CLI。官網
Gephi:可視化跨平台網路圖形化操作程序。官網
Guava:集合、緩存、支持基本類型、並發函數庫、通用註解、字元串處理、I/O等。官網
JADE:構建、調試多租戶系統的框架和環境。官網
javatuples:正如名字表示的那樣,提供tuple支持。盡管目前tuple的概念還有留有爭議。官網
JCommander:命令行參數解析器。官網
Protégé:提供存在論(ontology)編輯器以及構建知識系統的框架。官網
Apache Nutch:可用於生產環境的高度可擴展、可伸縮的網路爬蟲。官網
Crawler4j:簡單的輕量級網路爬蟲。官網
JSoup:刮取、解析、操作和清理HTML。官網
Apache Tapestry:基於組件的框架,使用Java創建動態、強健的、高度可擴展的Web應用程序。官網
Apache Wicket:基於組件的Web應用框架,與Tapestry類似帶有狀態顯示GUI。官網
Google Web Toolkit:一組Web開發工具集,包含在客戶端將Java代碼轉為JavaScript的編譯器、XML解析器、RCP官網API、JUnit集成、國際化支持和GUI控制項。
Grails:Groovy框架,旨在提供一個高效開發環境,使用約定而非配置、沒有XML並支持混入(mixin)。官網
Ninja:Java全棧Web開發框架。非常穩固、快速和高效。官網
Pippo:小型、高度模塊化的類Sinatra框架。官網
Play:使用約定而非配置,支持代碼熱載入並在瀏覽器中顯示錯誤。官網
PrimeFaces:JSF框架,提供免費和帶支持的商業版本。包括若干前端組件。官網
Ratpack:一組Java開發函數庫,用於構建快速、高效、可擴展且測試完備的HTTP應用程序。官網
Spring Boot:微框架,簡化了Spring新程序的開發過程。官網
Spring:旨在簡化Java EE的開發過程,提供依賴注入相關組件並支持面向切面編程。官網
Vaadin:基於GWT構建的事件驅動框架。使用服務端架構,客戶端使用Ajax。官網
Blade:國人開發的一個輕量級的MVC框架. 它擁有簡潔的代碼,優雅的設計。官網
jBPM:非常靈活的業務流程管理框架,致力於構建開發與業務分析人員之間的橋梁。官網
Activity:輕量級工作流和業務流程管理框架。官網github
位元組碼操作
編程方式操作位元組碼的開發庫。
集群管理
在集群內動態管理應用程序的框架。
代碼分析
測量代碼指標和質量工具。
編譯器生成工具
用來創建解析器、解釋器或編譯器的框架。
外部配置工具
支持外部配置的開發庫。
約束滿足問題求解程序
幫助解決約束滿足問題的開發庫。
持續集成
CSV解析
簡化CSV數據讀寫的框架與開發庫
簡化資料庫交互的相關工具。
幫實現依賴翻轉範式的開發庫。官網
開發流程增強工具
從最基本的層面增強開發流程。
分布式應用
用來編寫分布式容錯應用的開發庫和框架。
分布式資料庫
對應用程序而言,在分布式系統中的資料庫看起來就像是只有一個數據源。
發布
以本機格式發布應用程序的工具。
文檔處理工具
處理Office文檔的開發庫。
函數式編程
函數式編程支持庫。
游戲開發
游戲開發框架。
GUI
現代圖形化用戶界面開發庫。
高性能計算
涵蓋了從集合到特定開發庫的高性能計算相關工具。
IDE
簡化開發的集成開發環境。
JSON
簡化JSON處理的開發庫。
JVM與JDK
目前的JVM和JDK實現。
基於JVM的語言
除Java外,可以用來編寫JVM應用程序的編程語言。
日誌
記錄應用程序行為日誌的開發庫。
機器學習
提供具體統計演算法的工具。其演算法可從數據中學習。
消息傳遞
在客戶端之間進行消息傳遞,確保協議獨立性的工具。
雜項
未分類其它資源。
應用監控工具
監控生產環境中應用程序的工具。
原生開發庫
用來進行特定平台開發的原生開發庫。
自然語言處理
用來專門處理文本的函數庫。
網路
網路編程函數庫。
ORM
處理對象持久化的API。
用來幫助創建PDF文件的資源。
性能分析
性能分析、性能剖析及基準測試工具。
響應式開發庫
用來開發響應式應用程序的開發庫。
REST框架
用來創建RESTful 服務的框架。
科學計算與分析
用於科學計算和分析的函數庫。
搜索引擎
文檔索引引擎,用於搜索和分析。
安全
用於處理安全、認證、授權或會話管理的函數庫。
序列化
用來高效處理序列化的函數庫。
應用伺服器
用來部署應用程序的伺服器。
模板引擎
在模板中替換表達式的工具。
測試
測試內容從對象到介面,涵蓋性能測試和基準測試工具。
通用工具庫
通用工具類函數庫。
網路爬蟲
用於分析網站內容的函數庫。
Web框架
用於處理Web應用程序不同層次間通訊的框架。
業務流程管理套件
流程驅動的軟體系統構建。
資源
社區
『貳』 C++的學習方法!~
學習C++重在理解其各種語言設施所代表的語義,以及C++所能表示的語義所代表的設計思想。首先從宏觀上入手,你需要明白的是C++是程序設計語言的本質。在此我把C++最重要的性質寫下來:C++是一門靜態類型檢查,基於C內存模式,支持四種基本程序設計范型的語言。注意,這里說明了三個本質特性,靜態說明了語言的類型檢查性質,基於C內存模式告訴我們在C++中所有與內存有關的操作都需要程序員自己來負責,這樣就帶來了很多設計程序時的需要注意的地方,而理解支持的四種基本范型卻是理解各種語言設施的基礎。然後記住C++的最大的一點設計哲學,也是其貫穿應用C++的一條本質,我引用《C++ PRIMER》中文版前言內的一句話表示--「C++的基礎是各種設施,它們讓用戶能夠通過定義新的數據類型來擴展語言本身,這些新類型可以與內置類型一樣的使用方式(如何理解這句話是關鍵,我的理解是:用戶定義類型可以在任何使用內置類型的時候做為其替代,再具體點說就是用戶定義類型可以象內置類型那樣可以被聲明,其對象可以被初始化,可以相互復制,可以象內置類型對象那樣和很多操作符一起使用,可以被作為參數傳遞給函數,可以作為函數的返回值,可以作為容器的操作對象,用戶定義類型可以和內置類型一樣作為模板的參數),掌握這些設施(哪些設施?就是讓用戶定義類型可以和內置類型一樣方便使用的設施,包括什麼?構造,拷貝,解構函數,操作副重載.....)的第一步就是理解基本語言(什麼是基本語言?就是C++中better c部分)。
在此,我還想提出一點十分重要的概念:一門語言的最本質的東西就是其類型系統,任何語言都有自己的獨特的類型系統,學習C++就是學習他的類型系統。所以首先需要徹底明白什麼是數據類型這個概念。這樣你的思路就清楚了,你有選擇,從每一種C++支持的設計范型入手學習。
結構化設計-----也就是C++中的better c部分,你需要在C的基礎上學會函數重載和引用這兩個最重要的語言新特心性。
基於對象----你需要建立C++最強大的概念--類,也就是用戶定義類型,這其實就是數據結構裡面接觸的抽象數據類型的概念,以及合理構造使用類的一系列語言措施。並始終記住,在C++進行設計時用類來表示我們需要表示的概念。類也是C++抽象機制裡面最核心的概念。
面向對象----在這里你需要知道繼承和多態這樣的OO概念,以及句柄類這樣常見的設計技術,這里你需要明白你開始進入了對介面編程的階段。同時你要學會OO思想,C++的一些設施只是為了把OO思想在語言所支持的語義中充分的表示出來。但是在這里,同時你需要明白的C++能表示的語義是受到其當初語言設計原則限制的(什麼原則?靜態類型檢查,不為不需要的東西付出代價,選擇權在程序員手上語言本身不去強迫程序員的做出選擇),也就是說C++所能表示的OO思想可以稱為具有C++特色的OO思想了。這樣的OO思想和JAVA所代表的純OO哪個更好?沒有定論,因為他們本身的設計理念就不一樣。
泛型設計----這里你需要明白最重要的一點是C++的temlate機制無論其開始建立的初衷是什麼,現在他所代表的真實含義是:編譯時類型推導,也就是編譯時多態,由此明白了泛型的核心---把各種類型當作一種抽象條件的具體化,C++有措施可以定義抽象條件嗎?沒有,所以這些條件只能定義在我們自己的心中,但我們可以把具體化的類型當作一種抽象條件實現在template機制中去,從而使tempalte成為比類型推導機制更進一步的東西,那就是抽象條件的推導。也就是說,我們不再把template接受的參數看成是類型,而是把template看成是一種接受抽象條件的機制,無論其類型如何,只要這種類型滿足tempalte所接受的抽象條件就可以作為參數傳遞進去,這樣就代表了一種泛型的思想-----類型不再是根本,抽象條件才是,類型不過是抽象條件的外衣和在C++中的實現方式而已。在結合基於對象和泛型設計這兩種抽象設計模式的技術上誕生的工業產品就是---STL。
(二)書的誘惑
《C++程序設計語言》:如果你只買一本C++書,這本就是你的選擇,作者Bjarne就是讓你做出這樣選擇的全部理由,沒有人能比他更了解什麼樣才是真正的使用C++編程了,有人說到這本書語言晦澀,或者對與初學者此書不適合,對此評論我頗不以為然,我看的是中文版,起碼在我看來語言描敘非常到位,我喜歡這樣的技術描敘風格。全書的核心就是告訴你如何去用正確的觀念編寫正確的C++的代碼。強烈推薦。
《C++語言設計與演化》:這本書也是我同時擁有中英兩版的兩本書之一(另外一本是《設計模式》)。如果在得到上面的那本書之後你需要第二本,那麼在我看來這就是你的選擇,作者同樣是Bjarne,他將在這本書中告訴你C++的起源與發展,語言原則與本質,各種特性加入的理由和考量,以及幾乎一切關於C++有趣的故事。我閱讀過中英兩版,都是強烈推薦。
《C++標准程序庫》:在AMAZON上面關於C++書籍評論最為火暴的一本。全書對於標准程序庫的介紹可謂深入淺出,而且全書都是從實際運用出發,書中例子簡單卻非常說明問題,加上一些圖表的陳列,使其概念十分清晰,而且從手冊和學習兩方面看都有其存在價值。強烈推薦。
《EFFECTIVE C++ 中文版》:無須多說,在任何C++書籍推薦目錄中都可以找到這本書的身影,盛名之下必無虛士。主要強調的是運用C++的各種特性的時候所必須注意的地方,以及一些比較通用的設計手段。其短小精悍的語言自然非常適合快節奏的現代風格,個人就十分喜歡Meyer的寫作方式。強烈推薦。
《MORE EFFECTIVE C++ 中文版》:做為上本書的姐妹篇,一樣的寫作風格,一樣的寫作目的。只是個人認為和其姐姐相比,存在差距,主要是信息量沒有《EFFECTIVE C++ 中文版》那麼大,主要說到了一些C++的設計慣用手法。推薦。
《C++ PRIMER 中文版》:同樣是出自大師之手,作者LIPPMAN,作為早期C++編譯器的實現者之一,對與C++的了解以及該如何論序都有自己的獨到見解。做為C++的網路全書和《C++程序設計語言》有著一樣的地位。但是前者更強調的是C++的語法和其語義,而後者則是以如何用C++進行合理設計做為描敘的中心。全書構思十分巧妙,書的一開始就直接進入C++的主題,前面五章都用類設計一個數據結構,讓讀者完全明白了各種用戶定義類型所代表的抽象能力,然後直接進入第六章標准庫中的容器類,這樣的設計讓讀者十分清楚的建立容器和類這兩個C++中十分重要的概念。這樣的設計針對有一定基礎的C++讀者來說可以說是非常有效果的。但是對於初學者來說,這確實不是一本合適的書籍,因為一上來太多的名詞會把剛剛接觸C++的人嚇著的。推薦。
《C++沉思錄》:非常有特點的一本書,全書假設讀者已經通曉C++語言,重點告訴讀者C++的概念以及一些C++的設計手段,比如用C++到底為什麼會比C或者其他過程語言更好?(書中給出的答案是,因為只有對象才有能力保持一定的狀態,而演算法沒有這樣的能力),如何進行抽象數據類型的程序設計,如何理解多態,如何通過代理隱藏繼承,如何進行引用技數,為了效率如何進行緩時拷貝,以及模板技術是如何發展演進最後構成成STL庫的。閱讀感覺和《C++程序設計語言》一樣,思想性非常強,讀這樣的書很累,腦子必須一直思考問題,思考作者裡面提出的問題和他提出的解決方式。這本書最大的特點是非常直接的把C++語言的核心暴露出來-----三種抽象模型和極其語言設施本身對這三種抽象模型的支持。而《C++沉思錄》給我的更深層思考是什麼才是運用C++最合理的方式。推薦。
《C++ STL中文版》:很朴實,不花俏,但是價值很高。個人認為其主要價值體現在以下幾個方面:1,對於STL的實現關鍵iterator一般都使用了兩種方式描敘,一種比較老式的函數方法,一種是新的?traits技巧,這樣讀者可以非常清楚的知道技術的演進。2,提供了一個STL LITE版本,閱讀這樣的代碼對自己的提高非常大。3,書中提供的測試模塊對於讀者來說也是非常有的一章,對於想擴展STL的,可以按照上面提供的方法測試自己的STL組件。缺點:裝訂比較粗糙,與大師之作的地位不相稱。推薦
《C++ PRIMER PLUS 中文版》:一本思想性不是很強,技巧性不是很強的書,但是對於初學者來說非常合適的書。其中許多論序方式都和具體化,總體來說,這本書是我看過的C++書籍裡面最合適初學者的。推薦。
《深度探索C++對象模型》:這也是一本比較特別的書,告訴你編譯器是如何安排處理對象的內存空間的,以及一些OO特性是如何實現的。不認為這是一本C++必須讀物,算是課後讀物應該比較合適吧,因為有時間了解C++的OO實現還不如花點時間搞清楚OO理論的本質概念:type theory。推薦。
《C++設計新思維——泛型編程與設計模式之應用》:可謂C++中的奇書。這樣的一本書,很難讓人做出正確的評價與推薦指數(尤其是以我這個實用和人生本就應該享樂為人生觀的人來說~:),因為全書所代表的思想前衛到了有點不切實際的地步,模式+泛型—多麼高雅的組合。我個人的觀點是,只有一部分人需要閱讀此書,他們就是所謂的real c++ fans,暫且不提C++本身是否遇到了困難,就其書中所代表的設計思想,對於C++沒有一點感情的程序員(感情就是以愛好為基礎,而不是以攢錢為前提),我想對於這樣的設計技術總會有暈的感覺,而一般程序員多半都不會喜歡這樣的感覺~:)。推薦。
《對象揭秘:Java、Eiffel和C++》:從書名就可以看出這本書不僅僅和C++有關系。可以說全書就是對C++的一次批判吧(書也起源與作者的一篇批判C++的文章)。有時候聽聽另外一種聲音對自己保持清醒的頭腦是非常有幫助的,對待一個人,對待一本書以及對待一門程序設計語言都是如此。這本書好象不是很火,大概跟其宣傳不是很到位,或者同能同時了解這三門語言並比較關心這些語言深層次的優略的讀者比較少有關系吧,在我看來這本書包含了許多對象與類型方面的理論,最為出彩的就是作者抓住Bjarne的「在C++中一個類就是一個類型」這樣的「錯誤」言論狠批的論證過程。看這本書另外一個好處是能教會大家該如何去合理的辯駁自己的對手~:)。推薦。
《大規模C++程序設計》:書在手上很久了,可一直沒有仔細看,這也是評論之前必須說明的。總體看來書中涉及的很多東西都鮮見於其他讀本。不管AMAZON上的評論是否是這本書比較過時,起碼它介紹的許多對與我來說都是我所不知道不了解的,別人說過時是他的事情。而我,還是推薦。
《STL和泛型編程》:難得的一本關於泛型編程的理念書籍,同樣也是作為手冊和學習兩用,但是其手冊不是使用手冊,而是概念手冊,對於設計自己的STL組件,這本書有非常好的幫助,雖然網上有篇STL的文檔,其中的70%內容和這本書雷同,但此書仍不失可讀性。推薦。
《C++編程思想 第二版》:非常一般的書,是的這就是我對這本很多人奉為名著的評論,至於為什麼是這樣的評論,或者你不相信我說的是客觀話,在你買了之後看完就知道了。一般。
《Essential C++中文版》:總感覺這本書定位不是很清楚,因為對於初學者來說其開始就涉及了太多的名詞,初學者看這本書,幾乎就不要指望能很好的入門。而對於進階者來說,其內容並無新意,對於C++高手來說,這樣的小讀本,根本就沒有閱讀的必要,也許是LIPPMAN+JJHOU的盛名吧,但我覺得這次算是有虛士了~:)。一般。
《STL源碼剖析》:侯SIR的大陸兩本著作之一,但在我心中其質量好象並不如很多人說的那樣好,就同類作品《C++ STL中文版》相比較內容略現單薄,並且三章之後很多東西都給人以堆砌的感覺,而且大部分精彩的材料都出自《STL和泛型編程》一書,給人感覺書中侯SIR自己的東西並不多,但第二章對於內存管理有很好的論敘表現,並且裝訂精良,尤其是那些圖更是侯SIR的拿手好戲,但總體感覺有點華而不實。一般。
後面列出兩本不推薦的,具體原因也就不再分析。
《高質量程序設計指南--C++/C語言》,《C++編碼規范》
另外兩本常見的C++書籍: