當前位置:首頁 » 操作系統 » java源碼解析器

java源碼解析器

發布時間: 2022-12-06 18:09:31

java中常用的開發工具有哪些

常用的工具有:

  1. Eclipse 據數據顯示很多Java開發人員的Java開發工具便是Eclipse,這主要得益於Eclipse是一個開源的、可以基於Java的可擴展開發平台。Eclipse本身而言,它只是一個框架和一組服務,但可以通過插件組件構建開發環境。

  2. editplus EditPlus是一款由韓國 Sangil Kim (ES-Computing)開發的編輯器,可以作為C,Java,Php等等語言的一個簡單的IDE。EditPlus擁有無限制的撤消與重做、英文拼字檢查、自動換行、列數標記、搜尋取代、同時編輯多文件、全屏幕瀏覽功能,也是一款常見的Java開發工具。

  3. NetBeans NetBeans提供了功能全面的陣列,如轉換器,編輯器和代碼分析器,使用這些工具可以幫助我們使用的Java技術實現應用程序。NetBeans工具范圍相當廣泛,是一款的Java開發工具。

  4. Junit Junit是一個可以幫助Java開發人員編寫和運行測試的單元測試框架。JUnit和市場上其他類似的框架有著本質的區別。主要表現在你可以一次測試一個代碼塊,而不需要等待該模塊在運行測試前完成。實際上是你可以「先測試,然後寫代碼」

  5. VisualVM VisualVM也是一款使用較多的Java開發工具。它最主要的功能便是可以排查故障,可以使用VisualVM整合多命令行JDK工具。如jvmstat、JMX和Serviceability Agent(SA)中使用VisualVM。VisualVM最出名的是附加了API,以獲得更多的數據,以及自動使用更快捷。

  6. Gradle Gradle是一個自動化項目工具,是建立在Apache Maven和Apache Ant的功能上。雖然Gradle並不是的構建工具(的是Maven,64%的Java開發人員會選擇它),但它的普及速度很快。它同時也可作為默認的Android構建開發工具。

  7. SparkJava SparkJava是一款體形輕巧,功能強大的Web應用框架。Spark可以通過一些繁瑣的XML配置來使用Spark框架編寫應用程序。能讓我們花最少的精力來開發Java的Web應用程序。是一款的Java web開發工具。

  8. Clover Clover主要用於代碼覆蓋,可以幫助用於測試應用程序的代碼。我們可以在IDE或持續集成系統中運行Clover。能夠讓測試的運行速度更快。是Java開發測試必不可少的工具之一。

Ⅱ GitHub上面有哪些經典的java框架源碼

  • 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,而且能快速構建,可以免費試用。官網

  • CSV解析

    簡化CSV數據讀寫的框架與開發庫

  • 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本地發布文件。官網

  • 文檔處理工具

    處理Office文檔的開發庫。

  • 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等技術進行抽象的健壯框架。官網

  • GUI

    現代圖形化用戶界面開發庫。

  • 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 個人開發的高性能並發庫官網

  • IDE

    簡化開發的集成開發環境。

  • 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標簽。官網

  • JSON

    簡化JSON處理的開發庫。

  • Genson:強大且易於使用的Java到JSON轉換開發庫。官網

  • Gson:谷歌官方推出的JSON處理庫,支持在對象與JSON之間雙向序列化,性能良好且可以實時調用。官網

  • Jackson:與GSON類似,在頻繁使用時性能更佳。官網

  • LoganSquare:基於Jackson流式API,提供對JSON解析和序列化。比GSON與Jackson組合方式效果更好。官網

  • Fastjson:一個Java語言編寫的高性能功能完善的JSON庫。官網

  • Kyro:快速、高效、自動化的Java對象序列化和克隆庫。官網

  • JVM與JDK

    目前的JVM和JDK實現。

  • JDK 9:JDK 9的早期訪問版本。官網

  • OpenJDK:JDK開源實現。官網

  • 基於JVM的語言

    除Java外,可以用來編寫JVM應用程序的編程語言。

  • 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中作為網路層使用。官網

  • ORM

    處理對象持久化的API。

  • Ebean:支持快速數據訪問和編碼的ORM框架。官網

  • EclipseLink:支持許多持久化標准,JPA、JAXB、JCA和SDO。官網

  • Hibernate:廣泛使用、強健的持久化框架。Hibernate的技術社區非常活躍。官網

  • MyBatis:帶有存儲過程或者SQL語句的耦合對象(Couples object)。官網

  • OrmLite:輕量級開發包,免除了其它ORM產品中的復雜性和開銷。官網

  • Nutz:另一個SSH。官網,Github

  • JFinal:JAVA WEB + ORM框架。官網,Github

  • PDF

    用來幫助創建PDF文件的資源。

  • 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)構建非同步和基於事件的程序。官網

  • REST框架

    用來創建RESTful 服務的框架。

  • 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。官網

  • Web框架

    用於處理Web應用程序不同層次間通訊的框架。

  • 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

  • 資源

    社區

Ⅲ 求用java寫的java分析器(java parser)

開始用純jdk,過一般時間用EditPlus等這樣的工具,以後推薦使用Eclipse,因為是開源,也就是免費的。

JDK
Borland 的JBuilder
JBuilder,JDeveloper,VisualAge for Java
jcreater.

常見的十五種Java開發工具的特點
1、JDK (Java Development Kit)Java開發工具集
從初學者角度來看,採用JDK開發Java程序能夠很快理解程序中各部分代碼之間的關系,
有利於理解Java面向對象的設計思想。JDK的另一個顯著特點是隨著Java (J2EE、J2SE
以及J2ME)版本的升級而升級。但它的缺點也是非常明顯的就是從事大規模企業級Java
應用開發非常困難,不能進行復雜的Java軟體開發,也不利於團體協同開發。
2、Java Workshop
3、NetBeans 與Sun Java Studio 5

NetBeans是開放源碼的Java集成開發環境(IDE),適用於各種客戶機和Web應用。
Sun Java Studio是Sun公司最新發布的商用全功能Java IDE,支持Solaris、Linux和Win
dows平台,適於創建和部署2層Java Web應用和n層J2EE應用的企業開發人員使用。

NetBeans是業界第一款支持創新型Java開發的開放源碼IDE。開發人員可以利用業界
強大的開發工具來構建桌面、Web或移動應用。同時,通過NetBeans和開放的API的模塊
化結構,第三方能夠非常輕松地擴展或集成NetBeans平台。

NetBeans3.5.1主要針對一般Java軟體的開發者,而Java One Studio5則主要針對企
業做網路服務等應用的開發者。Sun不久還將推出Project Rave,其目標是幫助企業的開
發者進行軟體開發。NetBeans 3.5.1版本與其他開發工具相比,最大區別在於不僅能夠
開發各種台式機上的應用,而且可以用來開發網路服務方面的應用,可以開發基於J2ME
的移動設備上的應用等。在NetBeans 3.5.1基礎上,Sun開發出了Java
One Studio5,為用戶提供了一個更加先進的企業編程環境。在新的Java
One Studio5里有一個應用框架,開發者可以利用這些模塊快速開發自己在網路服務方面
的各種應用程序。
4、Borland 的JBuilder

Jbuilder進入了Java集成開發環境的王國,它滿足很多方面的應用,尤其是對於服
務器方以及EJB開發者們來說。下面簡單介紹一下Jbuilder的特點:

1)Jbuilder支持最新的Java技術,包括Applets、JSP/Servlets、JavaBean以及EJB
(Enterprise JavaBeans)的應用。

2)用戶可以自動地生成基於後端資料庫表的EJB Java類,Jbuilder同時還簡化了EJ
B的自動部署功能.此外它還支持CORBA,相應的向導程序有助於用戶全面地管理IDL(分布
應用程序所必需的介面定義語言Interface Definition Language)和控制遠程對象。

3)Jbuilder支持各種應用伺服器。Jbuilder與Inprise Application Server緊密集
成,同時支持WebLogic Server,支持EJB 1.1和EJB 2.0,可以快速開發J2EE的電子商務
應用。

4)Jbuilder能用Servlet和JSP開發和調試動態Web 應用。

5)利用Jbuilder可創建(沒有專有代碼和標記)純Java2應用。由於Jbuilder是用純J
ava語言編寫的,其代碼不含任何專屬代碼和標記,它支持最新的Java標准。

6)Jbuilder擁有專業化的圖形調試介面,支持遠程調試和多線程調試,調試器支持
各種JDK版本,包括J2ME/J2SE/J2EE。

JBuilder環境開發程序方便,它是純的Java 開發環境,適合企業的J2EE開發;缺點
是往往一開始人們難於把握整個程序各部分之間的關系,對機器的硬體要求較高,比較
吃內存,這時運行速度顯得較慢。
5、Oracle 的JDeveloper

Oracle9i JDeveloper(定為9.0版,最新為10g)為構建具有J2EE功能,XML和Web
services的復雜的,多層的Java應用程序提供了一個完全集成的開發環境。它為運用Ora
cle9i資料庫和應用伺服器的開發人員提供特殊的功能和增強性能,除此以外,它也有資
格成為用於多種用途Java開發的一個強大的工具。

Oracle9i JDeveloper的主要特點如下:

① 具有UML(Unified Modeling Language,一體化建模語言)建模功能。可以將業
務對象及e-business應用模型化。

② 配備有高速Java調試器(Debuger)、內置Profiling工具、提高代碼質量的工具
「CodeCoach」等。

③ 支持SOAP(Simple Object Access Protocol)「簡單對象訪問協議」、UDDI(U
niversal Description, Discovery and Integration)「統一描述、發現和集成協議」
、WSDL(Web Services Description Language)「WEB服務描述語言」等Web服務標准。

JDeveloper 不僅僅是很好的 Java 編程工具,而且是 Oracle Web 服務的延伸,支
持 Apache SOAP,以及 9iAS ,可擴充的環境和 XML 和 WSDL 語言緊密相關。Oracle9i
Jdeveloper完全利用Java編寫,能夠與以前的Oracle伺服器軟體以及其他廠商支持J2EE
的應用伺服器產品相兼容,而且在設計時著重針對Oracle9i,能夠無縫化跨平台之間的
應用開發,提供了業界第一個完整的、集成了J2EE和XML的開發環境,允許開發者快速開
發可以通過Web、無線設備及語音界面訪問的Web服務和交易應用,以往只能通過將傳統J
ava編程技巧與最新模塊化方式結合到一個單一集成的開發環境中之後才能完成J2EE應用
開發生命周期管理的事實,從根本上得到改變。缺點就是對於初學者來說,較復雜,也
比較難。
6、IBM的Visual Age for Java

Visual Age for Java是一個非常成熟的開發工具,它的特性以於IT開發者和業余的
Java編程人員來說都是非常用有用的。它提供對可視化編程的廣泛支持,支持利用CICS
連接遺傳大型機應用,支持EJB的開發應用,支持與Websphere的集成開發,方便的bean
創建和良好的快速應用開發(RAD)支持和無文件式的文件處理。

IBM為建設Web站點所推出的WebSphere Studio Advanced Edition及其包含的Visual
Age for Java Professional Edition軟體已全面轉向以Java為中心,這樣,Java開發人
員對WebSphere全套工具的感覺或許會好了許多。Studio所提供的工具有:Web站點管理
、快速開發 JDBC頁向導程序、HTML編輯器和HTML語法檢查等。這確實是個不錯的HTML站
點頁面編輯環境。Studio和VisualAge集成度很高,菜單中提供了在兩種軟體包之間快速
移動代碼的選項。這就讓使用Studio的Web頁面設計人員和使用VisualAge的Java程序員
可以相互交換文件、協同工作。

Visual Age for Java支持團隊開發,內置的代碼庫可以自動地根據用戶做出改動而
修改程序代碼,這樣就可以很方便地將目前代碼和早期版本做出比較。與Visual Age緊
密結合的Websphere Studio本身並不提供源代碼和版本管理的支持,它只是包含了一個
內置文件鎖定系統,當編輯項目的時候可以防止其他人對這些文件的錯誤修改,軟體還支
持諸如Microsoft Visual SourceSafe這樣的第三方源代碼控制系統。Visual Age for
Java完全面向對象的程序設計思想使得開發程序非常快速、高效。你可以不編寫任何代
碼就可以設計出一個典型的應用程序框架。Visual Age for Java作為IBM電子商務解決
方案其中產品之一,可以無縫地與其他IBM產品,如WebSphere、DB2融合, 迅速完成從設
計、開發到部署應用的整個過程。

Visual Age for Java獨特的管理文件方式使其集成外部工具非常困難,你無法讓Vis
ual Age for Java與其他工具一起聯合開發應用。
7、BEA 的 WebLogic Workshop

BEA WebLogic Workshop是一個統一、簡化、可擴展的開發環境,使所有的開發人員
都能在 BEA WebLogic Enterprise Platform之上構建基於標準的企業級應用,從而提高
了開發部門的生產力水平,加快了價值的實現。

WebLogic Workshop除了提供便捷的Web服務之外,它能夠用於創建更多種類的應用
。作為整個BEA WebLogic Platform的開發環境。不管是創建門戶應用、編寫工作流、還
是創建Web應用,Workshop 8.1都可以幫助開發人員更快更好地完成。

WebLogic Workshop的主要特點如下:

① 使 J2EE 開發切實可行,提高開發效率

BEA WebLogic Workshop 使開發人員遠離 J2EE 內在的復雜性,集中精力專注業務
邏輯,無須操心單調乏味的基礎結構代碼。這種創新意味著,已被企業驗證的 J2EE 的
強大功能,最終被大多數不熟悉 Java 和 J2EE 的應用開發人員所掌握,從而使 IT 部
門的工作效率提高一個數量級。

可視化設計器以及直觀的概念,如事件、屬性和控制項等,實現了基於事件的開發。W
orkshop 簡化的程序設計模型,使開發人員不必掌握復雜的 J2EE API 和面向對象的程
序設計原理。所有開發人員,包括 J2EE 專家和具有可視化和過程化語言技能的應用開
發人員在內,都可以共同工作在 BEA WebLogic Enterprise Platform 之上。Workshop
的可視化開發環境,創建帶有代碼注釋的標准 Java 文件,用來說明由運行時框架實施
的企業級需求。J2EE 和其他高級開發人員,藉助功能強大的代碼編輯功能,可以訪問
Java 源代碼,從而彌補了可視化設計器的不足。

② 構建企業級應用

通過在可伸縮、安全可靠的企業級架構上實施各種應用,BEA WebLogic
Workshop 大大降低了開發風險。而且,所有應用的創建都使用標準的 J2EE 組件,既保
護了您的技術投資,又保持了最大的靈活性。
BEA WebLogic Workshop 運行框架,是統一整個架構的匯聚層,使單一、簡化的程序設
計模型擴展到所有的 BEA WebLogic Enterprise Platform 應用類型。通過解釋設計時
創建的注釋代碼,運行時框架可以實現必要的 J2EE 組件,並且提取出與 J2EE 應用開
發有關的所有底層細節。

③ 降低 IT 復雜性

BEA WebLogic Workshop 提供各種 Java 控制項,使得與 IT 資源的連接更輕而易舉
。另外,在構建任何 BEA WebLogic Platform 的應用中,Java 控制項不僅可擴展而且完
全相同。這種強大、有效的方法能夠:降低 IT 技術的復雜性,優化信息的可用性,推
動包含"最佳業務方案"的可重用服務的開發,使開發人員能以更低的成本、更短的時間
實現更大的產出。

利用 BEA WebLogic Workshop,任何開發人員都能以最大的生產效率,構建各種
Web 服務、Web 應用、門戶和集成項目。BEA WebLogic Workshop是BEA的產品戰略核心
,它幫助客戶接觸和利用面向服務架構(SOA)的強大功能。BEA Weblogic Workshop
8.1極大簡化了當前實際企業集成環境中企業級應用和服務的構建,並成為全面支持關鍵
企業級應用(如非同步、真正松耦合和粗粒度消息傳送等)的自然選擇。它的缺點就是過於
復雜,對於初學者來說,理解起來較為困難。
8、WebGain 的Visual Cafe for Java

Visual Cafe 是只能在Symantec公司的Java虛擬機、Netscape公司的Java虛擬機和M
icrosoft虛擬機上工作的調試器。這對於開發者來講是一個重要的特性,因為用戶開發的
Java代碼中的許多軟體bug就可能中會在某種特定的虛擬機上起作用。

在修改後進行編譯基繼續進行調試時,Visual Cafe會自動將文件存檔,使用Visual
Cafe創建的原生應用具有許多特點。除了明顯的速度提高之外,Symantec使類庫的二進制
方式比正常的JDK小Visual Cafe為所指定的關系自動生成或更新必要的Java代碼。利用V
isual Cafe,用戶可以從一個標准對象資料庫中集合完整的Java應用程序和Applet,而
不必再編寫源代碼。Visual Cafe還提供了一個擴充的源代碼開發工具集。

Visual Cafe綜合了Java軟體的可視化源程序開發工具,它允許開發人員在可視化視
圖和源視圖之間進行有效地轉換。在可視化視圖中進行的修改立即反映在源代碼中。對
源代碼的改變自動更新可視化視圖。

Visual Cafe具有許多源文件方面的特性,如全局檢索和替換。絕大多數Java開發工
具的文獻的問題在於簡單地挨個介紹開發工具的每部分組件,但用戶在開應用時還需要
一個面向任務的手冊,利用這個手冊你可以不必知道工具每一部分的特定功能就可以開
始創建自己的應用。Visual Cafe提供了非常全面的用戶指南,它對最開始的安裝到創建
第一個Java應用和Applet都提供了全面的幫助,Visual Cafe將自動生成所指明關系的必
要Java代碼。Visual Cafe可以在Windows 95和Windows NT平台下運行,Symantec公司為
Java開發工作提供一個在Macintosh操作系統下可以運行的RAD工具。Visual Cafe編譯器
速度很快,在國際化支持方面比較突出;缺點就是對於初學者來說,較復雜,也比較難

9、Macromedia的JRUN

Macromedia公司的JRun是一個具有最廣闊適用性的Java引擎,用於開發及實施由Jav
a Servlets和JavaServer Pages編寫的伺服器端Java應用。JRun是第一個完全支持JSP
1.0 規格書的商業化產品,全球有超過80,000名開發人員使用JRun在他們已有的Web服務
器上添加伺服器端Java的功能。其中Web伺服器包括了Microsoft IIS,Netscape
Enterprise Server,Apache等。

JRun是開發實施伺服器端Java的先進引擎。如果我們希望在我們的Web應用中添加服
務器端Java功能,那麼JRun將成為我們的正確選擇。

JRun目前有3個版本,它是第一個支持Java Server Pages(JSP)規格書1.0的商業化
產品。JSP是一種強大的伺服器端技術,它是用於創建復雜Web應用的一整套快速應用開
發系統。JRun可以使我們開始開發並測試Java應用。它最多接受5個並發的連接並且包括
全部Java Servlet API,支持JavaServer Pages(JSP),支持所有主要的Web
servers和計算機平台。 JRun Pro能夠在生產環境下承受大訪問量的負載,幫助我們實
施應用、服務或Web站點(包括內聯網)。JRun Pro 支持無限量並發式連接運行多個Jav
a虛擬機,包括多個並發的Java虛擬機(JVM)。提供一個遠程管理applet以及一個遠程
可再分布式的管理applet。JRun Pro Unlimited包括了所有JRun Pro的功能,除次以外
,還可以運行無限量的,並發的JVM。

JRun依靠其內置的JRun Web Server可以單獨運行。使用伺服器端Java,用戶可以開
發出復雜的商業應用系統。最重要的一點是,由於servlets的平台獨立性,以及更加簡
單的開發、更快速的實施、更經濟的維護成本,它是CGI(Common Gateway
Interface)或Perl scripts的極佳的替代產品。缺點就是對於初學者來說,較復雜,也
比較難。
10、JCreator

JCreator 是一個Java程序開發工具,也是一個Java集成開發環境(IDE)。無論你
是要開發Java應用程序或者網頁上的Applet元件都難不倒它。在功能上與Sun公司所公布
的JDK等文字模式開發工具相較之下來得容易,還允許使用者自訂義操作窗口界面及無限
Undo/Redo等功能。

JCreator為用戶提供了相當強大的功能,例如項目管理功能,項目模板功能,可個
性化設置語法高亮屬性、行數、類瀏覽器、標簽文檔、多功能編繹器,向導功能以及完
全可自定義的用戶界面。通過JCreator,我們不用激活主文檔而直接編繹或運行我們的J
AVA程序。

JCreator能自動找到包含主函數的文件或包含Applet的Html文件,然後它會運行適
當的工具。在JCreator中,我們可以通過一個批處理同時編繹多個項目。JCreator的設
計接近Windows界面風格,用戶對它的界面比較熟悉。其最大特點是與我們機器中所裝的
JDK完美結合,是其它任何一款IDE所不能比擬的。它是一種初學者很容易上手的java開
發工具,缺點是只能進行簡單的程序開發,不能進行企業J2EE的開發應用。

11、Eclipse

Eclipse是一種可擴展的開放源代碼IDE。2001年11月,IBM公司捐出價值4,000萬美
元的源代碼組建了Eclipse聯盟,並由該聯盟負責這種工具的後續開發。集成開發環境(I
DE)經常將其應用范圍限定在「開發、構建和調試」的周期之中。為了幫助集成開發環境
(IDE)克服目前的局限性,業界廠商合作創建了Eclipse平台。Eclipse允許在同一IDE中
集成來自不同供應商的工具,並實現了工具之間的互操作性,從而顯著改變了項目工作
流程,使開發者可以專注在實際的嵌入式目標上。

Eclipse框架的這種靈活性來源於其擴展點。它們是在XML中定義的已知介面,並充
當插件的耦合點。擴展點的范圍包括從用在常規表述過濾器中的簡單字元串,到一個Jav
a類的描述。任何Eclipse插件定義的擴展點都能夠被其它插件使用,反之,任何Eclipse
插件也可以遵從其它插件定義的擴展點。除了解由擴展點定義的介面外,插件不知道它
們通過擴展點提供的服務將如何被使用。

利用Eclipse,我們可以將高級設計(也許是採用UML)與低級開發工具(如應用調試器
等)結合在一起。如果這些互相補充的獨立工具採用Eclipse擴展點彼此連接,那麼當我
們用調試器逐一檢查應用時,UML對話框可以突出顯示我們正在關注的器件。事實上,由
於Eclipse並不了解開發語言,所以無論Java語言調試器、C/C++調試器還是匯編調試器
都是有效的,並可以在相同的框架內同時瞄準不同的進程或節點。

Eclipse的最大特點是它能接受由Java開發者自己編寫的開放源代碼插件,這類似於
微軟公司的Visual Studio和Sun微系統公司的NetBeans平台。Eclipse為工具開發商提供
了更好的靈活性,使他們能更好地控制自己的軟體技術。Eclipse聯盟已經宣布將在2004
年中期發布其3.0版軟體。這是一款非常受歡迎的java開發工具,這國內的用戶越來越多
,實際上實用它java開發人員是最多的。缺點就是較復雜,對初學者來說,理解起來比
較困難。
13、Ant

Another Neat Tool(Ant)是一種基於Java的build工具。理論上來說,它有些類似於
(Unix)C中的make ,但沒有make的缺陷。因為Ant的原作者在多種(硬體)平台上開發軟
件時,無法忍受這些工具的限制和不便。類似於make的工具本質上是基於shell(語言)
的:他們計算依賴關系,然後執行命令(這些命令與你在命令行敲的命令沒太大區別)
。這就意味著你可以很容易地通過使用OS特有的或編寫新的(命令)程序擴展該工具;
然而,這也意味著你將自己限制在了特定的OS,或特定的OS類型上,如Unix。Ant就不同
了。與基於shell命令的擴展模式不同,Ant用Java的類來擴展。(用戶)不必編寫shell
命令,配置文件是基於XML的,通過調用target樹,就可執行各種task。每個task由實現
了一個實現了特定Task介面的對象來運行。

Ant支持一些可選task,一個可選task一般需要額外的庫才能工作。可選task與Ant
的內置task分開,單獨打包。這個可選包可以從你下載Ant的同一個地方下載。ANT本身
就是這樣一個流程腳本引擎,用於自動化調用程序完成項目的編譯,打包,測試等。除
了基於JAVA是平台無關的外,腳本的格式是基於XML的,比make腳本來說還要好維護一些
。Ant是Apache提供給Java開發人員的構建工具,它可以在Windows OS和Unix OS下運行
,它不僅開放源碼並且還是一個非常好用的工具。Ant是Apache Jakarta中一個很好用的
Java開發工具,Ant配置文件採用XML文檔編寫,所以Java程序員對其語法相當熟悉,Ant
是專用於Java項目平台,能夠用純Java來開發,它能夠運行於Java安裝的平台,即體現
了它的跨平台功能。它的缺點顯示執行結果只能是DOS字元界面,不能進行復雜的java程
序開發。
14、IntelliJ

Intellij IDEA是一款綜合的Java 編程環境,被許多開發人員和行業專家譽為市場
上最好的IDE。它提供了一系列最實用的的工具組合:智能編碼輔助和自動控制,支持J2
EE,Ant,JUnit和CVS集成,非平行的編碼檢查和創新的GUI設計器。IDEA把Java開發人
員從一些耗時的常規工作中解放出來,顯著地提高了開發效率。具有運行更快速,生成
更好的代碼;持續的重新設計和日常編碼變得更加簡易,與其它工具的完美集成;很高
的性價比等特點。在4.0版本中支持Generics,BEA WebLogic集成,改良的CVS集成以及G
UI設計器。

IntelliJ IDEA能盡可能地促進程序員的編程速度。它包括了很多輔助的功能,並且
與Java結合得相當好。不同的工具窗口圍繞在主編程窗口周圍,當滑鼠點到時即可打開
,無用時也可輕松關閉,使用戶得到了最大化的有效屏幕范圍。以技術為導向的IDEA集
成了調試器,支持本地和遠程的調試,即使我們需要修改一些設置上的東西使我們的工
作順利進展。另外,它還提供了通常的監視,分步調試以及手動設置斷點功能,在這種
斷點模式下,我們可以自動地在斷點之外設置現場訪問,甚至可以瀏覽不同的變數的值
。IDE支持多重的JVM設置,幾個編譯程序和Ant建造系統,並且,它使得設置多重的自定
義的類途徑變得簡單。

IntelliJ Idea是一個相對較新的Java IDE。它是Java開發環境中最為有用的一個。
高度優化的IntelleJ Idea使普通任務變得相當容易,Idea支持很多整合功能,更重要的
使它們設計的好容易使用。Idea支持XML中的代碼實現,Idea同時還會校正XML,Idea支
持JSP的結構。作用於普通Java代碼的眾多功能同樣適用於JSP(比如整合功能),同時
支持JSP調試;支持EJB,盡管它不包括對個別應用伺服器的特殊支持。Idea支持Ant建立
工具,不僅是運行目標它還支持編譯與運行程序前後運行目標,另外也支持綁定鍵盤快
捷鍵。在編輯一個Ant建立XML文件時,Idea還對組成Ant工程的XML部分提供支持。Intel
liJ IDEA 被稱為是最好的JAVA IDE開發平台,這套軟體就是以其聰明的即時分析和方便
的 refactoring 功能深獲大家所喜愛。缺點是較復雜,對初學者來說,理解起來比較困
難。

Ⅳ 編寫一個Java程序,使用DOM解析器解析下列XML文件

用dom4j解析,非常快,具體怎麼解析
SAXReader reader = new SAXReader();
String filePath = "c:/abc.xml";
File file = new File(filePath);
Document document = reader.read(file);// 讀取XML文件
Element root = document.getRootElement();// 得到根節點
Element select = root.element("select");
for (Iterator i = select.nodeIterator(); i.hasNext();) {
Object obj = i.next();
String content = "";
if (obj instanceof Text) {
content = ((Text)obj).getText().replaceAll("\n", "").trim();

Ⅳ 在java中解析xml有哪幾種方法

(1)DOM解析
DOM是html和xml的應用程序介面(API),以層次結構(類似於樹型)來組織節點和信息片段,映射XML文檔的結構,允許獲取
和操作文檔的任意部分,是W3C的官方標准
【優點】
①允許應用程序對數據和結構做出更改。
②訪問是雙向的,可以在任何時候在樹中上下導航,獲取和操作任意部分的數據。
【缺點】
①通常需要載入整個XML文檔來構造層次結構,消耗資源大。
【解析詳解】
①構建Document對象:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = bdf.newDocumentBuilder();
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(xml文件);
Document doc = bd.parse(is);
②遍歷DOM對象
Document: XML文檔對象,由解析器獲取
NodeList: 節點數組
Node: 節點(包括element、#text)
Element: 元素,可用於獲取屬性參數
(2)SAX(Simple API for XML)解析
流模型中的"推"模型分析方式。通過事件驅動,每發現一個節點就引發一個事件,事件推給事件處理器,通過回調方法
完成解析工作,解析XML文檔的邏輯需要應用程序完成
【優勢】
①不需要等待所有數據都被處理,分析就能立即開始。
②只在讀取數據時檢查數據,不需要保存在內存中。
③可以在某個條件得到滿足時停止解析,不必解析整個文檔。
④效率和性能較高,能解析大於系統內存的文檔。
【缺點】
①需要應用程序自己負責TAG的處理邏輯(例如維護父/子關系等),文檔越復雜程序就越復雜。
②單向導航,無法定位文檔層次,很難同時訪問同一文檔的不同部分數據,不支持XPath。
【原理】
簡單的說就是對文檔進行順序掃描,當掃描到文檔(document)開始與結束、元素(element)開始與結束時通知事件
處理函數(回調函數),進行相應處理,直到文檔結束
【事件處理器類型】
①訪問XML DTD:DTDHandler
②低級訪問解析錯誤:ErrorHandler
③訪問文檔內容:ContextHandler
【DefaultHandler類】
SAX事件處理程序的默認基類,實現了DTDHandler、ErrorHandler、ContextHandler和EntityResolver介面,通常
做法是,繼承該基類,重寫需要的方法,如startDocument()
【創建SAX解析器】
SAXParserFactory saxf = SAXParserFactory.newInstance();
SAXParser sax = saxf.newSAXParser();
註:關於遍歷
①深度優先遍歷(Depthi-First Traserval)
②廣度優先遍歷(Width-First Traserval)
(3)JDOM(Java-based Document Object Model)
Java特定的文檔對象模型。自身不包含解析器,使用SAX
【優點】
①使用具體類而不是介面,簡化了DOM的API。
②大量使用了Java集合類,方便了Java開發人員。
【缺點】
①沒有較好的靈活性。
②性能較差。
(4)DOM4J(Document Object Model for Java)
簡單易用,採用Java集合框架,並完全支持DOM、SAX和JAXP
【優點】
①大量使用了Java集合類,方便Java開發人員,同時提供一些提高性能的替代方法。
②支持XPath。
③有很好的性能。
【缺點】
①大量使用了介面,API較為復雜。
(5)StAX(Streaming API for XML)
流模型中的拉模型分析方式。提供基於指針和基於迭代器兩種方式的支持,JDK1.6新特性
【和推式解析相比的優點】
①在拉式解析中,事件是由解析應用產生的,因此拉式解析中向客戶端提供的是解析規則,而不是解析器。
②同推式解析相比,拉式解析的代碼更簡單,而且不用那麼多庫。
③拉式解析客戶端能夠一次讀取多個XML文件。
④拉式解析允許你過濾XML文件和跳過解析事件。
【簡介】
StAX API的實現是使用了Java Web服務開發(JWSDP)1.6,並結合了Sun Java流式XML分析器(SJSXP)-它位於
javax.xml.stream包中。XMLStreamReader介面用於分析一個XML文檔,而XMLStreamWriter介面用於生成一個
XML文檔。XMLEventReader負責使用一個對象事件迭代子分析XML事件-這與XMLStreamReader所使用的游標機制
形成對照。

Ⅵ java解析lrc文件代碼

lrc可以通過如下util工具類進行轉換,如果想知道結果是否讀取的有問題,可以直接用記事本打開lrc文件的,之後和輸出結果比對一下就行。

package com.routon.utils;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import android.util.Log;

/**
* parse lrc file tool
* eg:
* utilLrc lrc = new utilLrc("/sdcard/test.lrc");
* get song name : String title = lrc.getTitle();
* get performer name : String artist = lrc.getArtist();
* get album name: String album = lrc.getAlbum();
* get lrcmaker name: String lrcMaker = lrc.getLrcMaker();
* get song list: List<Statement> list = lrc.getLrcList();
*
* @author xuweilin
*
*/
public class utilLrc {
private static String TAG = "utilLrc";
public class Statement {
private double time = 0.0; //time, 0.01s
private String lyric = ""; //song word
/*
* get time
*/
public double getTime() {
return time;
}
/*
* set time
*/
public void setTime(double time) {
this.time = time;
}
/*
* set time.format:mm:ss.ms
*/
public void setTime(String time) {
String str[] = time.split(":|\\.");
this.time = Integer.parseInt(str[0])*60+Integer.parseInt(str[1])+Integer.parseInt(str[2])*0.01;
}
/*
* get lrc word
*/
public String getLyric() {
return lyric;
}
/*
* set lrc word
*/
public void setLyric(String lyric) {
this.lyric = lyric;
}
}
private BufferedReader bufferReader = null;
private String title = "";
private String artist = "";
private String album = "";
private String lrcMaker = "";
private List<Statement> statements = new ArrayList<Statement>();

/*
*
* fileName
*/
public utilLrc(String fileName) throws IOException{
FileInputStream file = new FileInputStream(fileName);
bufferReader = new BufferedReader(new InputStreamReader(file, "utf-8"));
readData();
}

/*
* read the file
*/
private void readData() throws IOException{
statements.clear();
String strLine;
while(null != (strLine = bufferReader.readLine()))
{
if("".equals(strLine.trim()))
{
continue;
}
if(null == title || "".equals(title.trim()))
{
Pattern pattern = Pattern.compile("\\[ti:(.+?)\\]");
Matcher matcher = pattern.matcher(strLine);
if(matcher.find())
{
title=matcher.group(1);
continue;
}
}
if(null == artist || "".equals(artist.trim()))
{
Pattern pattern = Pattern.compile("\\[ar:(.+?)\\]");
Matcher matcher = pattern.matcher(strLine);
if(matcher.find())
{
artist=matcher.group(1);
continue;
}
}
if(null == album || "".equals(album.trim()))
{
Pattern pattern = Pattern.compile("\\[al:(.+?)\\]");
Matcher matcher = pattern.matcher(strLine);
if(matcher.find())
{
album=matcher.group(1);
continue;
}
}
if(null == lrcMaker || "".equals(lrcMaker.trim()))
{
Pattern pattern = Pattern.compile("\\[by:(.+?)\\]");
Matcher matcher = pattern.matcher(strLine);
if(matcher.find())
{
lrcMaker=matcher.group(1);
continue;
}
}
int timeNum=0;
String str[] = strLine.split("\\]");
for(int i=0; i<str.length; ++i)
{
String str2[] = str[i].split("\\[");
str[i] = str2[str2.length-1];
if(isTime(str[i])){
++timeNum;
}
}
for(int i=0; i<timeNum;++i)
{
Statement sm = new Statement();
sm.setTime(str[i]);
if(timeNum<str.length)
{
sm.setLyric(str[str.length-1]);
}
statements.add(sm);
}
}
sortLyric();
}
/*
* judge the string is or not date format.
*/
private boolean isTime(String string)
{
String str[] = string.split(":|\\.");
if(3!=str.length)
{
return false;
}
try{
for(int i=0;i<str.length;++i)
{
Integer.parseInt(str[i]);
}
}
catch(NumberFormatException e)
{
Log.e(TAG, "isTime exception:"+e.getMessage());
return false;
}
return true;
}
/*
* sort the word by time.
*/
private void sortLyric()
{
for(int i=0;i<statements.size()-1;++i)
{
int index=i;
double delta=Double.MAX_VALUE;
boolean moveFlag = false;
for(int j=i+1;j<statements.size();++j)
{
double sub;
if(0>=(sub=statements.get(i).getTime()-statements.get(j).getTime()))
{
continue;
}
moveFlag=true;
if(sub<delta)
{
delta=sub;
index=j+1;
}
}
if(moveFlag)
{
statements.add(index, statements.get(i));
statements.remove(i);
--i;
}
}
}
/**
* get title
* @return
*/
public String getTitle(){
return title;
}
/**
* get artist
* @return
*/
public String getArtist(){
return artist;
}
/**
* get album
* @return
*/
public String getAlbum(){
return album;
}
/**
* get lrc maker
* @return
*/
public String getLrcMaker(){
return lrcMaker;
}
/**
* get song list
* @return
*/
public List<Statement> getLrcList(){
return statements;
}
}

Ⅶ java中幾種解析html的工具

HTML分析是一個比較復雜的工作,Java世界主要有幾款比較方便的分析工具:

1.Jsoup
Jsoup是一個集強大和便利於一體的HTML解析工具。它方便的地方是,可以用於支持用jQuery中css selector的方式選取元素,這對於熟悉js的開發者來說基本沒有學習成本。

String content = "blabla";
Document doc = JSoup.parse(content);
Elements links = doc.select("a[href]");

    Jsoup還支持白名單過濾機制,對於網站防止XSS攻擊也是很好的。

    2.HtmlParser

    HtmlParser的功能比較完備,也挺靈活,但談不上方便。這個項目很久沒有維護了,最新版本是2.1。HtmlParser的核心元素是Node,對應一個HTML標簽,支持getChildren()等樹狀遍歷方式。HtmlParser另外一個核心元素是NodeFilter,通過實現NodeFilter介面,可以對頁面元素進行篩選。這里有一篇HtmlParser的使用文章:使用 HttpClient 和 HtmlParser 實現簡易爬蟲。

    3.Apache tika

    tika是專為抽取而生的工具,還支持PDF、Zip甚至是JavaClass。使用tika分析HTML,需要自己定義一個抽取內容的Handler並繼承org.xml.sax.helpers.DefaultHandler,解析方式就是xml標準的方式。crawler4j中就使用了tika作為解析工具。SAX這種流式的解析方式對於分析大文件很有用,我個人倒是認為對於解析html意義不是很大。

  • InputStream inputStream = null;

  • HtmlParser htmlParser = new HtmlParser();

  • htmlParser.parse(new ByteArrayInputStream(page.getContentData()),

  • contentHandler, metadata, new ParseContext());

  • 4.HtmlCleaner與XPath

    HtmlCleaner最大的優點是:支持XPath的方式選取元素。XPath是一門在XML中查找信息的語言,也可以用於抽取HTML元素。XPath與CSS Selector大部分功能都是重合的,但是CSS Selector專門針對HTML,寫法更簡潔,而XPath則是通用的標准,可以精確到屬性值。XPath有一定的學習成本,但是對經常需要編寫爬蟲的人來說,這點投入絕對是值得的。

Ⅷ java解析xml的幾種方式哪種最好

(1)DOM解析
DOM是html和xml的應用程序介面(API),以層次結構(類似於樹型)來組織節點和信息片段,映射XML文檔的結構,允許獲取
和操作文檔的任意部分,是W3C的官方標准
【優點】
①允許應用程序對數據和結構做出更改。
②訪問是雙向的,可以在任何時候在樹中上下導航,獲取和操作任意部分的數據。
【缺點】
①通常需要載入整個XML文檔來構造層次結構,消耗資源大。
【解析詳解】
①構建Document對象:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = bdf.newDocumentBuilder();
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(xml文件);
Document doc = bd.parse(is);
②遍歷DOM對象
Document: XML文檔對象,由解析器獲取
NodeList: 節點數組
Node: 節點(包括element、#text)
Element: 元素,可用於獲取屬性參數
(2)SAX(Simple API for XML)解析
流模型中的"推"模型分析方式。通過事件驅動,每發現一個節點就引發一個事件,事件推給事件處理器,通過回調方法
完成解析工作,解析XML文檔的邏輯需要應用程序完成
【優勢】
①不需要等待所有數據都被處理,分析就能立即開始。
②只在讀取數據時檢查數據,不需要保存在內存中。
③可以在某個條件得到滿足時停止解析,不必解析整個文檔。
④效率和性能較高,能解析大於系統內存的文檔。
【缺點】
①需要應用程序自己負責TAG的處理邏輯(例如維護父/子關系等),文檔越復雜程序就越復雜。
②單向導航,無法定位文檔層次,很難同時訪問同一文檔的不同部分數據,不支持XPath。
【原理】
簡單的說就是對文檔進行順序掃描,當掃描到文檔(document)開始與結束、元素(element)開始與結束時通知事件
處理函數(回調函數),進行相應處理,直到文檔結束
【事件處理器類型】
①訪問XML DTD:DTDHandler
②低級訪問解析錯誤:ErrorHandler
③訪問文檔內容:ContextHandler
【DefaultHandler類】
SAX事件處理程序的默認基類,實現了DTDHandler、ErrorHandler、ContextHandler和EntityResolver介面,通常
做法是,繼承該基類,重寫需要的方法,如startDocument()
【創建SAX解析器】
SAXParserFactory saxf = SAXParserFactory.newInstance();
SAXParser sax = saxf.newSAXParser();
註:關於遍歷
①深度優先遍歷(Depthi-First Traserval)
②廣度優先遍歷(Width-First Traserval)
(3)JDOM(Java-based Document Object Model)
Java特定的文檔對象模型。自身不包含解析器,使用SAX
【優點】
①使用具體類而不是介面,簡化了DOM的API。
②大量使用了Java集合類,方便了Java開發人員。
【缺點】
①沒有較好的靈活性。
②性能較差。
(4)DOM4J(Document Object Model for Java)
簡單易用,採用Java集合框架,並完全支持DOM、SAX和JAXP
【優點】
①大量使用了Java集合類,方便Java開發人員,同時提供一些提高性能的替代方法。
②支持XPath。
③有很好的性能。
【缺點】
①大量使用了介面,API較為復雜。
(5)StAX(Streaming API for XML)
流模型中的拉模型分析方式。提供基於指針和基於迭代器兩種方式的支持,JDK1.6新特性
【和推式解析相比的優點】
①在拉式解析中,事件是由解析應用產生的,因此拉式解析中向客戶端提供的是解析規則,而不是解析器。
②同推式解析相比,拉式解析的代碼更簡單,而且不用那麼多庫。
③拉式解析客戶端能夠一次讀取多個XML文件。
④拉式解析允許你過濾XML文件和跳過解析事件。
【簡介】
StAX API的實現是使用了Java Web服務開發(JWSDP)1.6,並結合了Sun Java流式XML分析器(SJSXP)-它位於
javax.xml.stream包中。XMLStreamReader介面用於分析一個XML文檔,而XMLStreamWriter介面用於生成一個
XML文檔。XMLEventReader負責使用一個對象事件迭代子分析XML事件-這與XMLStreamReader所使用的游標機制
形成對照。

Ⅸ 下載的java源代碼怎麼打開

.class文件是java編譯後的文件,它不是源代碼,真正的java源代碼是.java文件。
java源代碼是txt格式的.java文件,用記事本就可以打開。
用eclipse打開java文件的方式是:
如果java文件是一個eclipse工程(根目錄帶有.project文件),用file/import/general/exist java project/(大概是)然後找到你的目錄。
否則需要自己新建一個工程file/new/java project
然後把java文件拷貝到.src目錄下。

.class文件是直接的編譯好的文件,可以用jad把.class文件反編譯成java文件,不過反編譯的代碼和原來的代碼不一定完全一樣。

Ⅹ 請問解析代碼是什麼請舉例說明和解釋器的具體關系如何體現 不勝感謝……

計算機的cpu在生產出來就已經規定只能對某一些的二進制代碼(機器碼)進行操作,比如兩個數相加/減等,他們都有固定的二進制操作碼的。也就是說cpu只認得機器碼。
但平時我編程的時候一般都是用高級編程語言或匯編,寫的都是一些有英文字母的,比如c/c++里有if else等,這cpu當然就不認識啦。
所以呢,我們用還有把高級語言寫出來的源代碼翻譯成cpu能認識的機器碼。這個翻譯的過程就是編譯了。
但實際上有些並不是直接就翻譯成機器碼的。比如vb、java。我想你應該聽說過jre把,這是java的解析器。因為用java語言寫出來的源代碼用java的編譯器javac編譯後只能得到中間代碼,cpu是不認得這中間代碼的,但java解析器認得中間代碼,而且能把中間代碼翻譯成cpu認得的機器碼。這個過程就是解析了

熱點內容
打游戲伺服器延遲什麼意思 發布:2023-01-29 09:41:36 瀏覽:3
linux的sda 發布:2023-01-29 09:41:31 瀏覽:527
android項目源碼下載 發布:2023-01-29 09:41:21 瀏覽:680
php前一年 發布:2023-01-29 09:37:41 瀏覽:589
基尼系數演算法 發布:2023-01-29 09:35:37 瀏覽:573
買單反看什麼配置好 發布:2023-01-29 09:31:50 瀏覽:860
資料庫行數 發布:2023-01-29 09:30:55 瀏覽:97
少兒編程暴雷 發布:2023-01-29 09:30:47 瀏覽:70
上傳相片說說的句子 發布:2023-01-29 09:27:55 瀏覽:40
源碼組件 發布:2023-01-29 09:27:50 瀏覽:929