当前位置:首页 » 操作系统 » 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认得的机器码。这个过程就是解析了

热点内容
python解释 发布:2024-05-08 18:52:58 浏览:580
开利中央空调密码如何修改 发布:2024-05-08 18:52:14 浏览:639
厂房配置应包含哪些 发布:2024-05-08 18:26:22 浏览:760
访问极路由硬盘 发布:2024-05-08 18:15:15 浏览:718
小学生如何自学编程 发布:2024-05-08 18:14:31 浏览:561
数据库复制软件 发布:2024-05-08 18:00:30 浏览:238
python软件测试 发布:2024-05-08 18:00:24 浏览:698
mac开发php工具 发布:2024-05-08 17:59:03 浏览:81
安卓服务器如何搭建服务器 发布:2024-05-08 17:33:27 浏览:538
什么安卓手机玩韩信好2021 发布:2024-05-08 17:29:01 浏览:32