精华内容
下载资源
问答
  • Java资源大全中文版

    2020-08-05 17:26:07
    官网 Buck:Facebook构建工具。官网 字节码操作 编程方式操作字节码的开发库。 ASM:通用底层字节码操作和分析开发库。官网 Byte Buddy:使用流式API进一步简化字节码生成。官网 Byteman:在运行时通过DSL(规则)...

    Java资源大全中文版

    我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。awesome-java 就是 akullpp 发起维护的 Java 资源列表,内容包括:构建工具、数据库、框架、模板、安全、代码分析、日志、第三方库、书籍、Java 站点等等。伯乐在线已经把 awesome-java 资源列表翻成中文后发布于 ImportNew

    Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大。这也是我们发起这个开源项目的初衷。


    我们要做什么?


    如何参与本项目?


    如何为列表贡献新资源?

    欢迎大家为列表贡献高质量的新资源,提交PR时请参照以下要求:

    • 请确保推荐的资源自己使用过
    • 提交PR时请注明推荐理由

    资源列表管理收到PR请求后,会定期(每周)在微博转发本周提交的PR列表,并在微博上面听取使用过这些资源的意见。确认通过后,会加入资源大全。

    感谢您的贡献!


    本项目的参与者

    注:名单不分排名,不定期补充更新


    目录

    古董级工具

    这些工具伴随着Java一起出现,在各自辉煌之后还在一直使用。

    构建工具

    构建及应用依赖关系处理工具。

    • Apache Maven:Maven是一款声明式构建及依赖管理工具,采用约定优于配置方式进行管理。相对Apache Ant更推荐使用Maven,前者采用了过程式管理,维护相对困难。官网
    • 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是更加专门的轻量级工具,易于上手且支持语法超前预测。官网

    外部配置工具

    支持外部配置的开发库。

    约束满足问题求解程序

    帮助解决约束满足问题的开发库。

    • 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抽象。官网
    • jOOQ:为SQL schema生成typesafe代码。官网
    • MapDB:以磁盘或堆内存中并发集合为基础的嵌入式数据库引擎。官网
    • Presto:针对大数据的分布式SQL查询引擎。官网
    • Querydsl:Typesafe统一查询。官网

    数据结构

    • Apache Parquet:Google Dremel论文中发布的基于组装算法的列式(Columnar)存储格式。官网
    • Protobuf:Google数据交换格式。官网
    • SBE:简单二进制编码,是最快速的消息格式之一。官网
    • Wire:整洁轻量级协议缓存。官网

    时间日期工具库

    处理时间和日期的开发库。

    • Joda-Time:在Java 8发布前,Joda-Time是实际使用的时间日期库标准。官网
    • Time4J:高级时间和日期库。官网
    • ThreeTen:JSR-310实现,为JDK提供更具特点的时间和日期API。官网

    依赖注入

    帮实现依赖翻转范式的开发库。 官网

    开发流程增强工具

    从最基本的层面增强开发流程。

    • 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:针对缓存的高并发键值对数据存储。官网
    • TiDB:开源分布式HTAP数据库,结合了传统的RDBMS和NoSQL的最佳特性。官网

    发布

    以本机格式发布应用程序的工具。

    • 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等技术进行抽象的健壮框架。官网
    • jPCT:基于OpenGL技术开发的3D图形引擎。纯Java的3D引擎。官网

    GUI

    现代图形化用户界面开发库。

    高性能计算

    涵盖了从集合到特定开发库的高性能计算相关工具。

    • Agrona:高性能应用中常见的数据结构和工具方法。官网
    • Disruptor:线程间消息传递开发库。官网
    • fastutil:快速紧凑的特定类型集合(Collection)。官网
    • GS Collections:受Smalltalk启发的集合框架。官网
    • HPPC:基础类型集合。官网
    • Javolution:实时和嵌入式系统的开发库。官网
    • JCTools:JDK中缺失的并发工具。官网
    • Koloboke:Hash set和hash map。官网
    • Trove:基础类型集合。官网
    • High-scale-lib:Cliff Click 个人开发的高性能并发库官网

    IDE

    简化开发的集成开发环境。

    图像处理

    创建、评价和操作图片的支持库。

    • 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实现。

    基于JVM的语言

    除Java外,可以用来编写JVM应用程序的编程语言。

    • Scala:融合了面向对象和函数式编程思想的静态类型编程语言。官网
    • Groovy:类型可选(Optionally typed)的动态语言,支持静态类型和静态编译。目前是一个Apache孵化器项目。官网
    • Clojure:可看做现代版Lisp的动态类型语言。官网
    • Ceylon:RedHat开发的面向对象静态类型编程语言。官网
    • Kotlin:JetBrain针对JVM、安卓和浏览器提供的静态类型编程语言。官网
    • Xtend:一种静态编程语言,能够将其代码转换为简洁高效的Java代码,并基于JVM运行。官网

    日志

    记录应用程序行为日志的开发库。

    机器学习

    提供具体统计算法的工具。其算法可从数据中学习。

    消息传递

    在客户端之间进行消息传递,确保协议独立性的工具。

    • 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:强大的任务调度库.官网

    应用监控工具

    监控生产环境中应用程序的工具。

    原生开发库

    用来进行特定平台开发的原生开发库。

    • 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中作为网络层使用。官网
    • unirest-java: Unirest 是一个轻量级的 HTTP 请求库,涵盖 Node、Ruby、Java、PHP、Python、Objective-C、.NET 等多种语言。可发起 GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS 请求。官网
    • brpc-java: java版baidu rpc框架,高性能、多协议、易扩展、低耦合。官网

    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
    • Apache OpenJPA: 实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。 官网

    PDF

    用来帮助创建PDF文件的资源。

    性能分析

    性能分析、性能剖析及基准测试工具。

    响应式开发库

    用来开发响应式应用程序的开发库。

    • 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 Velocity:提供HTML页面模板、email模板和通用开源代码生成器模板。官网
    • FreeMarker:通用模板引擎,不需要任何重量级或自己使用的依赖关系。官网
    • Handlebars.java:使用Java编写的模板引擎,逻辑简单,支持语义扩展(semantic Mustache)。官网
    • Thymeleaf:旨在替换JSP,支持XML文件的工具。官网
    • Beetl:新一代的模板引擎,功能强大,性能良好,超过当前流行的模板引擎。而且还易学易用。官网

    测试

    测试内容从对象到接口,涵盖性能测试和基准测试工具。

    • 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)编辑器以及构建知识系统的框架。官网
    • Hutool:一个Java工具集,缓存、HTTP、加密解密、DFA、JSON、分组配置文件、数据库操作、图片验证码、Excel读写、定时任务、模板引擎、邮件、Servlet、二维码、Emoji、分词等一系列工具类。官网

    网络爬虫

    用于分析网站内容的函数库。

    • Apache Nutch:可用于生产环境的高度可扩展、可伸缩的网络爬虫。官网
    • Crawler4j:简单的轻量级网络爬虫。官网
    • JSoup:刮取、解析、操作和清理HTML。官网
    • webmagic:一个可扩展的Java爬虫框架,架构类似Python的Scrapy。

    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

    资源

    社区

    • r/java:Reddit的Java子社区。官网
    • stackoverflow:问答平台。官网
    • vJUG:虚拟Java用户组。官网
    • java8 新特性教程例子。github

    有影响力的书

    具有广泛影响且值得阅读的Java经典书籍。

    播客

    可以一边编程一边听的东西。

    • Java Council:官网
    • Java Posse:Discontinued as of 02/2015.官网

    微博、微信公众号

    • ImportNew:是最受欢迎的、专注Java技术分享的微信公众号。专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
    • ImportNew 微博:@ImportNew

    Twitter

    • Adam Bien:自由职业者、作家、JavaONE明星演讲者、顾问、Java Champion。
    • Antonio Goncalves:Java Champion、JUG Leader、Devoxx France、Java EE 6/7、JCP、作家。
    • Arun Gupta:Java Champion、JavaONE明星演讲者、JUG Leader、Devoxx4Kids成员、Red Hatter。
    • Bruno Borges:Oracle产品经理、Java Jock。
    • Ed Burns:Oracle技术团队顾问。
    • Eugen Paraschiv:Spring安全课程作者。
    • James Weaver:Java、JavaFX、IoT开发者、作者和演讲者。
    • Java EE:Java EE Twitter官方账号。
    • Java Magazine:Java杂志官方账号。
    • Java.net:Java.net官方账号。
    • Java:Java Twitter官方账号。
    • Javin Paul:知名Java博客作者。
    • Lukas Eder:Data Geekery(jOOQ)创始人兼CEO。
    • Mario Fusco:RedHatter、JUG协调、活跃讲师和作者。
    • Mark Reinhold:Oracle首席架构师、Java平台开发组。
    • Martijn Verburg:London JUG co-leader、演讲者、作家、Java Champion等。
    • OpenJDK:OpenJDK官方账号。
    • Reza Rahman:Java EE、GlassFish、WebLogic传道者、作家、演讲者、开源黑客。
    • Simon Maple:Java Champion、virtualJUG创始人、LJC leader、RebelLabs作者。
    • Stephen Colebourne: Java Champion、演讲者。
    • Tim Boudreau:作家、NetBeans大牛。
    • Trisha Gee:Java Champion、演讲者。

    微博、微信公众号

    • ImportNew 微博:@ImportNew
    • ImportNew:最受欢迎的、专注Java技术分享的微信公众号。专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。

    知名网站

    值得关注的Java技术站点。

    中文站点

    英文站点

    展开全文
  • 1、Signal-Android Signal是一种典型的一键式安装应用程序,Signal的主要功能是,在验证您的电话号码并让您独立验证其他Signal用户的身份之后,它可以发送受端到端加密保护的文本,视频,音频和图片消息。你也可以...

    1月份和2月份GitHub上最热门的Java开源项目排行已经出炉啦,一起来看看上榜详情

    1、Signal-Android

    Signal是一种典型的一键式安装应用程序,Signal的主要功能是,在验证您的电话号码并让您独立验证其他Signal用户的身份之后,它可以发送受端到端加密保护的文本,视频,音频和图片消息。你也可以使用它进行一对一或一对多的语音和视频通话,本项目是它的Android版。

    地址:https://github.com/signalapp/Signal-Android Star 19540

    关于Java项目整理了100+Java项目教程+源码+笔记,地址:100+个Java项目教程+源码+笔记

    2、miaosha

    高并发大流量如何进行秒杀架构?该项目对这部分知识做了一个系统的整理,写了一整套系统。

    地址:https://github.com/qiurunze123/miaosha Star 18943

    3、Logi-KafkaManager

    滴滴Logi-KafkaManager脱胎于滴滴内部多年的Kafka运营实践经验,是面向Kafka用户、Kafka运维人员打造的共享多租户Kafka云平台。专注于Kafka运维管控、监控告警、资源治理等核心场景,经历过大规模集群、海量大数据的考验。内部满意度高达90%的同时,还与多家知名企业达成商业化合作。

    地址:https://github.com/didi/Logi-KafkaManager Star 1442

    4、DoraemonKit

    简称DoKit,中文名哆啦A梦,意味着能够像哆啦A梦一样提供给他的主人各种各样的工具。是一款功能齐全的客户端( iOS 、Android )研发助手。能够让每一个 App 快速接入一些常用的或者你没有实现的一些辅助开发工具、测试效率工具、视觉辅助工具,而且能够完美在 Doraemon 面板中接入你已经实现的与业务紧密耦合的一些非通用的辅助工具,并搭配我们的dokit平台,让功能得到延伸,接入方便,便于扩展。

    地址:https://github.com/didi/DoraemonKit Star 16635

    5、jetlinks-community

    JetLinks 基于Java8,Spring Boot 2.x,WebFlux、Netty、Vert.x、Reactor等开发,是一个全响应式的企业级物联网平台。支持统一物模型管理,多种设备,多种厂家,统一管理。统一设备连接管理,多协议适配(TCP,MQTT、UDP、CoAP、HTTP等),屏蔽网络编程复杂性,灵活接入不同厂家不同协议等设备。实时数据处理,设备告警,消息通知,数据转发。地理位置,数据可视化等。能帮助你快速建立物联网相关业务系统。

    地址:https://github.com/jetlinks/jetlinks-community Star 937

    6、trino

    知名开源项目Presto的三位发起人宣布,将PrestoSQL项目的名字改为Trino。该项目原本是由 Facebook 运营的,Presto是Facebook开发的数据查询引擎,可对250PB以上的数据进行快速地交互式分析。该项目始于2012年秋季开始开发,2013年Facebook正式宣布开源 Presto。

    地址:https://github.com/trinodb/trino Star 2519

    7、Algorithms

    算法和数据结构是高效代码和良好软件设计的基础。要成为一名优秀的程序员,就需要创建和设计出色的算法。该存储库的目标是演示如何以最简单,最优雅的方式实现常见的数据结构和算法。

    地址:https://github.com/williamfiset/Algorithms Star 8508

    8、dbeaver

    dbeaver是一个免费开源的通用数据库管理和开发工具,适用于所有开发人员、SQL程序员、数据库管理员和分析人员等,它支持任何具有JDBC驱动程序的数据库,EE版本还支持非JDBC数据源(MongoDB,Cassandra,Redis,DynamoDB等)。

    地址:https://github.com/dbeaver/dbeaver Star 18284

    9、nacos

    Nacos是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

    地址:https://github.com/alibaba/nacos Star 16204

    #10、COLA

    COLA是Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”,也叫“可乐”架构,目前COLA已经发展到COLA 2.0。

    地址:https://github.com/alibaba/COLA Star 4049

    11、airbyte

    airbyte是一个基singer扩展的EL平台,具有以下特性:

    • 方便的数据操作(配置+api)
    • 方便的connector 构建操作
    • 开源可以私有化部署

    地址:https://github.com/airbytehq/airbyte Star 1341

    12、hello-algorithm

    小浩算法是一套针对小白的完整的算法训练流程!目前共包括以下几个步骤:

    • 算法基础知识
    • 高频面试题解(图解)
    • 算法视野扩展

    地址:https://github.com/geekxh/hello-algorithm Star 25046

    13、Algorithms

    算法和数据结构是高效代码和良好软件设计的基础。要成为一名优秀的程序员,就需要创建和设计出色的算法。该存储库的目标是演示如何以最简单,最优雅的方式实现常见的数据结构和算法。

    地址:https://github.com/williamfiset/Algorithms Star 9156

    #14、sodium-fabric

    Sodium 是 Minecraft客户端的免费开放源代码渲染引擎替代品,可极大地提高帧速率,减少微死角并修复 Minecraft中的图形问题。

    地址:https://github.com/CaffeineMC/sodium-fabric Star 1214

    15、JustAuth

    号称史上最全的整合第三方登录的开源库。目前已支持Github、Gitee、微博、钉钉、百度、Coding、腾讯云开发者平台、OSChina、支付宝、QQ、微信、淘宝、Google、Facebook、抖音、领英、小米、微软、今日头条、Teambition、StackOverflow、Pinterest、人人、华为和企业微信等第三方平台的授权登录。

    地址:https://github.com/justauth/JustAuth Star 10810

    16、keycloak

    Keycloak是一个为浏览器和RESTful Web服务提供SSO的集成。基于OAuth 2.0和JSON Web Token(JWT)规范。最开始是面向JBoss和Wildfly通讯,但已经计划为其他诸如 Tomcat、Jetty、Node.js、Rails、Grails等环境提供解决方案。

    地址:https://github.com/keycloak/keycloak Star 8296

    17、k-9

    K-9 Mail是一款软件,应用平台Android 2.1+。支持市面上大多数的IMAP,POP3邮箱的自动设置,亦可不识别的邮箱服务做手动设置,K-9 Mail邮件客户端也支持Exchange 2003/2007 (with WebDAV),在设置方面也还算简单。

    地址:https://github.com/k9mail/k-9 Star 5646

    18、iceberg

    Apache Iceberg 是一种新的表格格式,用于存储和分析大型的、移动缓慢的表格数据。它的工作方式类似于 SQL 表,它旨在改进内置在 Hive、Presto 和 Spark 中的事实上的标准表布局。

    地址:https://github.com/apache/iceberg Star 1205

    19、PojavLauncher

    ojavLauncher是基于Boardwalk的Minecraft:Java版Android启动器。该启动器可以启动几乎所有可用的Minecraft版本,还支持通过Forge和Fabric进行改装。

    地址:https://github.com/PojavLauncherTeam/PojavLauncher Star 511

    20、airbyte

    Airbyte 是一个开放源代码的平台,可帮助用户将数据从应用程序,API 和数据库中同步到仓库。使得数据集成变得简单、安全和可扩展。

    地址:https://github.com/airbytehq/airbyte Star 1759

    21、Java


    该项目用Java实现的所有算法。

    地址:https://github.com/TheAlgorithms/Java Star 35708

    22、shopizer

    Shopizer是一个使用Hibernate、Spring、Struts2、jQuery等技术框架开发的基于Web的销售管理和电子商务内容管理系统(CMS)。主要功能包括:购物车,库存管理,付款和运输,订单管理,在线发票和订单跟踪。

    地址:https://github.com/shopizer-ecommerce/shopizer Star 1953

    23、jetlinks-community

    JetLinks 基于Java8、Spring Boot 2.x、WebFlux、Netty、Vert.x、Reactor等开发, 是一个开箱即用,可二次开发的企业级物联网基础平台。平台实现了物联网相关的众多基础功能, 能帮助你快速建立物联网相关业务系统。

    地址:https://github.com/jetlinks/jetlinks-community Star 1217

    关于Java项目整理了100+Java项目教程+源码+笔记,地址:100+个Java项目教程+源码+笔记

    展开全文
  • 前言: ThoughtWorks人酷爱技术。我们对技术进行构建、研究、 测试、开源、记述,并始终致力于对其进行改进-以求造福 大众。我们的使命是支持卓越软件并掀起IT革命。我们创建 并分享ThoughtWorks技术雷达就是为了...

    前言:

    ThoughtWorks人酷爱技术。我们对技术进行构建、研究、 测试、开源、记述,并始终致力于对其进行改进-以求造福 大众。我们的使命是支持卓越软件并掀起IT革命。我们创建 并分享ThoughtWorks技术雷达就是为了支持这一使命。由 ThoughtWorks中一群资深技术领导组成的ThoughtWorks 技术顾问委员会(TAB)创建了该雷达。他们定期开会讨论 Thoughtworks的全球技术战略以及对行业有重大影响的 技术趋势。

    这个雷达以独特的形式记录技术顾问委员会的讨论结果, 为从开发人员到CTO在内的各路利益相关方提供价值。这 些内容只是简要的总结,我们建议您探究这些技术以了解 更多细节。

    这个雷达是图形性质的,把各种技术项目归类为技术、工具、平台和语言及框架,如果某个条目可以出现在多个象 限,我们选择看起来最合适的象限。我们还进一步将这些技 术分为四个环以反映我们目前对其的态度。

    要了解关于雷达的更多背景,请点击:https://www. thoughtworks.com/radar/faq 

    关于技术:

    相关解读:

          很多文档都可以被高度可读的代码和测试取代。然而对于演进式架构来说,记录某些设计决策非常重要,这不仅有利于未来的团队成员理解,也有利于外部监督。轻量级架构决策记录是一种用于捕获重要的架构决策及其上下文和结果 的技术。我们建议将这些详细信息进行版本化,而不是wiki 或网站,这样所记录的内容就可以和代码保持同步。对于大 多数项目,我们没有理由不采用这种技术。

          过去12个月里,我们注意到对数字化平台这个主题的关注 发生了急剧的增长。希望快速有效推出新数字解决方案的公司,正在建立内部平台,为交付团队提供自助服务,从而访问那些构建和运营自己的解决方案所必需的业务API、工 具、知识和支持。我们发现当这些平台得到跟外部产品同等的重视时,它们的效率是最高的。将产品管理思维应用于内部平台,意味着与内部消费者(开发人员)建立共情,并在设计上彼此协作。平台的产品经理要建立路线图,确保平台为业务交付价值,为开发者改善体验。一些企业甚至为内部 平台创建了品牌标识,并向同事推销平台的优势。平台产品 经理将负责平台的质量、收集使用指标,并持续改进平台。 将平台作为产品来处理,有助于创造一个蓬勃发展的生态系统,避免构建另一个停滞不前的、未充分利用的面向服务 架构。

    适应度函数借鉴自进化计算,被用来衡量方 案对满足目标的适合度。

          适应度函数借鉴自进化计算,被用来衡量方案对满足目标 的适合度。当定义演进式算法时,算法设计者会寻求更优 解,而适应度函数则定义了在此上下文中“更优”的含义。 《演进式架构》一书定义了架构适应度函数的概念,为衡量架构特征提供了一个客观全面的方法,包括已有的验证 标准,比如单元测试、业务指标、监控等等。我们相信架构 师能够验证并维持一套自动化的可持续的架构标准,这是 演进式架构的关键。

    CI和CD工具可以用来测试服务配置、服务镜 像构建、环境准备以及环境的集成。(为基础设施即代码使用流水线) 

      在早期的技术雷达中,我们讨论了Netflix的(Chaos Monkey)。 混沌猴可以随机终止生产系统中的运行实例,并对结果进 行度量,从而帮助验证系统在运行时对生产中断的应对能 力。今天,人们有了一个新兴术语来描述这一技术的广泛应 用:混沌工程。在生产环境的分布式系统中运行这些试验, 可以帮助我们建立系统在动荡环境下依旧能够按预期工作 的信心。如果想要更好地理解这个技术方向,请参阅混沌工程原则。

      受DevOps运动的启发,DESIGNOPS是一种文化上的转 变,同时包含了一系列的实践。DesignOps可以帮助组织不 断地重新设计产品,而又无需在质量、服务连贯性和团队 的自主性上妥协。DesignOps提倡创建并演进设计的基础 设施,最大限度降低创造新的UI概念及其变体的工作量, 并与最终用户建立快速且可靠的反馈机制。通过使用诸如 Storybook这样促进紧密协作的工具,对前期分析和规范交 接的需求可以被降至最低。使用DesignOps,设计正在从一 种具体的实践演变成每个人工作的一部分。

          我们已经从引入微服务架构中获得了明显的好处,微服务 架构可以让团队裁剪出独立部署的交付物以及可维护的服务。不幸的是,我们还看到许多团队在后端服务之上创建了 前端单体——一个单一,庞大和杂乱无绪的浏览器应用。我 们首选的(经过验证的)方法是将基于浏览器的代码拆分成 微前端。在这种方法中,Web应用程序被分解为多个特性, 每个特性都由不同的前后端团队拥有。这确保每个特性都 独立于其他特性开发,测试和部署。这样可以使用多种技术 来重新组合特性——有时候是页面,有时候是组件——最终 整合成一个内聚的用户体验。

          使用持续交付流水线来编排软件的发布流程,已经成为了 主流概念。不过,对基础设施代码进行自动化测试还没有被 广泛理解。CI和CD工具可以用来测试服务配置(如Chef的 cookbook,Puppet的模块,Ansible的playbook)、服务镜像 构建(如Packer)、环境准备(Terraform,CloudFormation 等)以及环境的集成。对基础设施即代码使用流水线可以让 错误在进入运维环境,包括开发和测试环境之前就被发现。 这些流水线还能确保基础设施工具能始终如一地运行在CI / CD的Agent上,而不是在特定的工作站上。挑战仍然存在,比 如与容器和虚拟机相关的更长的反馈周期,但我们认为这是 一个有价值的技术。

          无服务器架构迅速得到了需要部署云端应用的组织的认 可,并且有着大量可供选择的部署方式。即便是相对传统 和保守的组织,也在使用一部分无服务器技术。虽然可以 使用的合适的模式仍在不断涌现,但大多数时候我们的讨 论都会走向函数即服务(Functions as a Service)(例 如 AWS Lambda,Google Cloud Functions,Azure Functions)。部署无服务器函数毫无疑问能够减少大量传 统方式特有的,涉及服务器和操作系统配置和编排的工作 量。然而serverless也并不是百试不爽的万金油。当前这个 阶段,因为一些特别的需求,你必须做好能回退至容器化, 甚至是实例化部署的准备。与此同时,无服务器架构的其他 组件,比如后端即服务(Backend as a Service),几乎成为 了默认的选择。

          因为测试驱动开发自身的优势,许多开发团队会在编写代 码时采用这一实践。也有一些团队开始使用容器来打包和部署软件,而通过自动化脚本来构建容器已经是被广为接受的实践。但迄今为止,我们很少看到有团队能将这 两种趋势结合,通过测试来驱动容器脚本的编写。借助 ServerSpec和Goss这样的框架,你可以为独立的或编排 的容器呈现预期的功能,并得到快速反馈。这意味着我们 可以寻求用TDD开发容器脚本。我们在这方面得到的初步体验是十分积极的。 

          近年来IT运维所收集到的数据量一直在增加。例如,微服 务的迅速发展意味着更多的应用程序正在生成自己的操作 数据;而像Splunk,Prometheus或ELK堆栈这样的工具让 数据存储和后续处理变得更容易,从而获得运营洞见。毋庸 置疑,随着机器学习工具的普及,运营人员已经开始将统计 模型和经过训练的分类算法纳入其工具包中。虽然这些算 法并不新颖,而且人们已经进行了各种尝试来自动化服务管 理,但是在了解机器和人员如何协作以便早期识别异常和确 定故障来源这个方向,我们还是先行者。尽管基于算法的IT运维(Algorithmic IT Operations)有过度炒作的风险, 但毫无疑问,机器学习算法的稳步提升将改变未来的数据 中心运营中人类所起到的作用。

          在银行、数字货币、供应链透明化等多个金融科技领域,区 块链技术已经被炒作成“灵丹妙药”。我们曾经在过去的雷 达中推荐过带有智能合约功能的Ethereum,而最近已经看 到Ethereum在去中心化应用的其他领域中得到更多的发展。尽管这一技术非常年轻,我们仍然鼓励你在加密货币和 银行之外的领域,使用它构建去中心化应用。

    在银行、数字货币、供应链透明化等多个金 融科技领域,区块链技术已经被炒作成“灵 丹妙药”。

           随着事件流(event streaming)平台(如Apache Kafka)的 兴起,很多人将它们视为消息队列的高级形态,仅用来传输 事件。即便按这种方式使用,事件流仍然具有传统消息队列 无法比拟的优势。然而我们更感兴趣的是,人们如何通过 把平台(特别是Kafka)作为主要存储,把数据保存为不可 变事件,从而将事件流作为正确数据之源。例如,以Event Sourcing方式设计的服务,可以使用Kafka作为事件存储工 具(event store),其他服务可以消费这些事件。这一技术能 够减少本地持久化和集成之间的重复工作。

          主要的云服务提供商(Amazon、Microsoft和Google)正 陷入一场激烈的竞争中,以保持核心能力的均势,虽然 他们的产品只是略有差异。这导致一些组织采用多云 (POLYCLOUD)策略,而不是与一个提供商“全面”合作, 他们正在以最佳组合的方式,将不同类型的工作负载交由不 同的供应商。例如,这可能包括将标准服务放在AWS上,使 用Google进行机器学习,把采用SQL Server的.NET程序部 署在Azure,或者可能使用Ethereum Consortium的区块链 解决方案。这并不等同于致力于供应商间可移植性的“跨云 策略”,后者价格昂贵且会导致迎合大众的想法。多云策略 则专注于使用每个云能提供的最好的服务。 

     服务啮合(service mesh)在服务发现、安全、 跟踪、监控与故障处理方面提供了一致性,且 不需要像API网关或ESB这样的共享资产。

          现在越来越多的大型组织在向更加自组织的团队结构转 型,这些团队拥有并运营自己的微服务,但他们如何在不依 赖集中式托管的基础架构下,确保服务之间必要的一致性与 兼容性呢?为了确保服务之间的有效协作,即使是自组织的 微服务也需要与一些组织标准对齐。服务啮合(SERVICE MESH)在服务发现、安全、跟踪、监控与故障处理方面提供 了一致性,且不需要像API网关或ESB这样的共享资产。服务 啮合的一个典型实现包含轻量级反向代理进程,这些进程 可能伴随每个服务进程一起被部署在单独的容器中。反向 代理会和服务注册表、身份提供者和日志聚合器等进行通 信。通过该代理的共享实现(而非共享的运行时实例),我 们可以获得服务的互操作性和可观测性。一段时间以来,我 们一直主张去中心化的微服务管理方法,也很高兴看到服务 啮合这种一致性模式的出现。随着linkerd和Istio等开源项 目的成熟,服务啮合的实现将更加容易。

          微服务架构中,众多服务将其资产和功能都通过API暴露出 来,同时也扩大了系统的被攻击面。因此一个零信任—— “永不信任,始终验证”的安全架构势在必行。然而,由于 服务代码复杂性的增加以及在多语言环境中缺少库和语言 的支持,服务之间的安全控制往往会被忽略。为了解决这 个复杂性,我们已经看到将安全性委托给进程外Sidecar的 做法,Sidecar是一个独立的进程或一个容器,它与每个服 务一起部署和调度,并共享相同的执行上下文、主机和身 份。Sidecar实现了安全功能,如对服务间的通信作透明加 密、TLS终止,以及对调用方服务或最终用户的鉴权机制。在 实现自己的用于端点安全的SIDECAR之前,我们推荐你先 研究一下Istio、linkerd或者Envoy。

          传统的企业安全方法往往强调锁定事物并减慢变革的步 伐。但众所周知,攻击者对系统实施攻击的时间越长,造成 的损失也就越大。3Rs企业安全:轮换、修复、重建,利用基 础设施自动化和持续交付来消除攻击机会。轮换凭证,一旦 有可用的补丁就立即应用补丁,并且在几分钟或几小时内完 成从已知的安全状态重建系统,这会使攻击者更难获得立 足点。随着现代原生云架构的出现,3RS安全技术变得可 行。当应用程序部署为容器,并通过完全自动化的流水线进 行构建和测试时,安全补丁只不过是又一次通过一个点击, 就可以通过流水线发布的小版本而已。当然,为了保持良 好的分布式系统实践,开发人员需要设计应用以适应意外 的服务器中断。这就和在环境中实施混沌猴所造成的影响 相似。

          Kafka已经是流行的消息解决方案,同时,Kafka Streams也 站到了流式架构的最前沿。不幸的是,随着人们将Kafka作 为数据和应用平台的核心,我们看到一些组织没有将Kafka 的生态组件(如连接器、流处理器等)按产品和服务团队划 分,而是将它们集中管制,这用KAFKA重现了ESB反模式。 这一反模式具有很严重的问题,过多的逻辑、编排、转换被 插入到集中管理的ESB中,使得系统严重依赖于一支中心化 团队。我们特此提出这个问题,希望劝阻这种反模式的更多 实现。

    关于平台:

    内容解读:

          自我们上次在技术雷达中提到KUBERNETES至今,它已经 成为我们大部分客户将容器部署到服务器集群的默认解决 方案。而能替代它的其他产品不但没有获得如此的客户认 同度,甚至在某些场景中,我们的客户会将他们的“引擎” 都更换成 Kubernetes。Kubernetes已经成为主流公有云平 台上的首选容器编排平台。这些主流公有云平台包括微软的 Azure 容器服务以及 Google Cloud(参见GKE)。此外市面上 还有很多好用的产品,来不断丰富快速扩大的Kubernetes 生态圈。与此同时,那些试图用一层抽象将Kubernetes隐藏 起来的平台尚未成功地证明自己的价值。

          作为一个开源的跨平台软件开发框架,.NET CORE被 越来越多地运用到实际项目中。该框架令 .NET 应用能在 Windows、macOS 以及 Linux 系统上进行开发和部 署。.NET Standard 2.0 的发布增加了跨多个 .NET 平台的标准 API 的数量,这使得往.NET Core迁移的路径变得更为 清晰。有关.NET Core对其上类库的支持性问题正在逐渐减 少。一流的跨平台工具已经涌现出来,用于在非 Windows 平台上进行高效的开发工作。运用Docker镜像,能让.NET Core 服务可以轻松地集成到容器环境中。其社区发展的积 极方向以及来自我们实际项目的反馈,都表明.NET Core现 在已经可以广泛地运用了。

          随着Gatling和Locust等工具的日益成熟,压力测试变得越 来越容易。与此同时,弹性云平台基础设施可以模拟大量客 户端实例来进行压力测试。我们欣喜地看到像 Flood IO 这 样的云平台能越来越深入地应用此类技术。FLOOD IO是一个基于SaaS的压力测试服务。它可以用来向数百台云端 服务器分发测试脚本并在其上执行。我们的团队发现,通过 重用现有的Gatling测试脚本能很简单地将性能测试迁移到 Flood IO。

          随着GOOGLE CLOUD PLATFORM(GCP)在可用地理区 域和服务成熟度方面的扩展,全球的客户在规划云技术策 略时可以认真考虑这个平台了。与其主要竞争对手Amazon Web Services相比,在某些领域, GCP 所具备的功能已经 能与之相媲美。而在其他领域又不失特色——尤其是在可访 问的机器学习平台、数据工程工具和可行的 “Kubernetes 即服务解决方案”(GKE)这些方面。在实践中,我们的团队 对GCP工具和API良好的开发者体验也赞赏有嘉。

    随着Google Cloud Platform在可用地理区 域和服务成熟度方面的扩展,全球的客户在 规划云技术策略时可以认真考虑这个平台了。

          在微服务或任何其他分布式架构中,最常见的一个需求 是通过身份验证和授权功能来保护服务或 API。 这正是 Keycloak 所解决的问题。KEYCLOAK是一个开源的身份和 访问管理解决方案,它让保障应用程序和微服务的安全变 得如此简便,以至于几乎不需要编写什么代码。它提供了单 点登录、社交网络登录和一些开箱即用的标准协议——如 OpenID Connect、OAuth 2.0 和 SAML。我们的团队一直在 使用这个工具,并计划继续使用。不过这个平台在安装时需 要做一些工作。由于在初始化和运行时需要通过 API 对其 进行配置,因而必须编写脚本以确保部署是可重复的。

          在之前的雷达中,我们提到由于Unity在一个成熟平台上 提供了一些抽象和工具,因此它已经成为VR和AR应用程 序开发的首选平台。与它的主要替代品Unreal Engine相 比,Unity更容易访问。随着它最近推出的针对iOS平台的 ARKit 和针对安卓平台的 ARCore,这两个主要的移动平台 都已拥有强大的原生SDK,用来构建增强现实应用。但是, 我们觉得很多团队,特别是那些在构建游戏方面没有丰富 经验的团队,都能从利用类似Unity这样的抽象中受益。这 就是为什么我们要提出超越游戏的UNITY。这使得不熟悉 上述开发技术的开发人员可以专注于这个SDK,来进行相 关开发。它还为多设备提供了解决方案,特别是在原生SDK 不支持的安卓端。

          常与WhatsApp被相提并论的微信,在中国正在成为名副其 实的商业平台。很多人可能还不知道,微信还是最流行的线 上支付平台之一。借助微信内置的内容和会员管理系统,一 些小型企业现已完全依赖微信开展其业务。大型组织可以 通过微信的一些功能把内部系统对接给员工使用。作为覆 盖七成以上中国人的平台,微信是每一个想开辟中国市场的 企业都需要考虑的重要商业因素。

          AZURE SERVICE FABRIC是为微服务和容器打造的分布 式系统平台。它不仅可以与诸如Kubernetes之类的容器编 排工具相媲美,还可以支持老式的服务。它的使用方式花样 繁多,既可以支持用指定编程语言编写的简单服务,也可以 支持 Docker 容器,还可以支持基于 SDK 开发的各种服务。 自几年之前发布以来,它不断增加更多功能,包括提供对 Linux 容器的支持。尽管 Kubernetes 已成为容器编排工具的主角,但 Service Fabric 可以作为 .NET 应用程序的首选。 我们正在 ThoughtWorks 的一些项目中使用这个平台,迄今 为止感觉不错。

          CLOUD SPANNER是一个完全托管的关系型数据库服务。 它在提供高可用性和强大的一致性的同时又不会对延迟做 出妥协。Google 在一个名为 Spanner 的全球分布式数据库 上投入了大量时间之后,最近以 Cloud Spanner 的名称将这 个服务对外发布。 这个平台可以将数据库实例在全球范围 从单个节点规模化到数千个节点,而不必担心数据一致性问 题。 Cloud Spanner 通过高可用的分布式时钟 TrueTime,为读取和快照功能提供了强大的一致性。从 Cloud Spanner 读取数据时可以使用标准 SQL,但是在做写入操作时必须 使用其提供的 RPC API。 尽管并不是所有的服务都需要全球范围规模的分布式数据库,但 Cloud Spanner 的对外发 布极大地改变了我们对数据库的认知。其设计正在影响像 CockroachDb 这样的开源产品。

          在经过了彻底探索之后,区块链领域的重要参与者R3意识 到区块链并不契合他们的目的,所以他们创造了CORDA。 Corda是专注于金融领域的分布式账本技术(distributed ledger technology, DLT)平台。 R3具有非常明确的价值主 张,并且知道他们的问题需要务实的技术方法。 这和我们 的经验相符——由于采矿成本较大和运营效率低下,对于某 些商业案例,目前的区块链解决方案可能不是合理的选择。 尽管我们目前在Corda上的开发体验并不非常流畅,而且 v1.0发布后其API并不稳定,我们还是期望看到 DLT 领域能 进一步成熟。

          COSMOS DB是微软于年初发布的全球分布式与多模型数据库服务。虽然大多数新型 NoSQL 数据库都提供可调节 的一致性,但Cosmos DB 却将一致性作为首要特性予以支 持。它提供五种不同的一致性模型。值得强调的是,它还支 持多种数据模型——键值、文档、列族和图——所有这些数 据模型都映射到其内部数据模型,即原子记录序列(atomrecord-sequence, ARS)。Cosmos DB 有趣的一个特点是 能针对其延迟、吞吐、一致性和可用性来提供服务级别协议 (service level agreement, SLA)。其适用性广的特点,给 其他云厂商设置了一个很高的追赶标准。

          随着近来聊天机器人与语音平台的爆发,涌现出一批工具和 平台——它们能够提供一些服务,从文字中挖掘意图,并管 理会话流,以供人使用。Google所收购的DIALOGFLOW (原名为API.ai),就是一种这样的”自然语言理解即服务” 的平台。它在该领域中与Facebook的wit.ai以及Amazon Lex等平台展开了竞争。

          尽管以Kubernetes作为容器编排平台正成为软件开发生 态的主流,但从运维角度看,运行 Kubernetes 集群仍然 很复杂。GKE(Google Container Engine)是一个托管Kubernetes解决方案,用来部署容器化应用程序。它能降 低运行和维护Kubernets集群的运维成本。我们的团队在使 用GKE获得了良好的体验。平台能完成许多繁重的工作,例如安装安全补丁,监控和自动修复节点,以及管理多集群和 多区域网络。根据我们的经验,Google采用了API优先的方 式来开放平台功能,并使用了诸如用OAuth进行服务授权的 行业标准。这些都能够改善开发人员的体验。尽管其开发团 队已经尽力隔离底层变更对使用者的影响,但要意识到GKE 仍在快速开发中。在过去一段时间里我们还是会时不时地 受到变更所带来的影响。我们期待随着Terraform on GKE 及类似工具的出现,“基础设施即代码”这一实践的成熟度 会不断提高。

    Language Servers将代码补全、调用分析和 重构等能力提取为一种 API,从而让任何编 辑器都能与编程语言的抽象语法树交互。

          KAFKA STREAMS是一个用于构建流式应用的轻量级库。 它的设计目标在于简化流式处理,让它像为异步服务设计 的主流应用编程模型一样易于访问。当需要应用流式处理 模型来解决问题,又不想陷入运行集群(通常会随着功能完 备的流处理框架而引入)的复杂性时,它会是一个很好的选 择。 新的功能包括在Kafka集群中的“恰好一次”(exactly once)流处理。实现方式是在Kafka生产者端引入幂等性, 并且使用新的事务API跨多个分区实现原子写入。

          大型 IDE 的威力很大程度上源于利用源代码分析出的抽象 语法树(AST)来进一步分析和操作源代码的能力,比如代 码补全,调用分析和重构。语言服务器将这种能力提取到单 独的进程中,从而让任意文本编辑器都可以通过 API 来使 用 AST。微软从他们的 OmniSharp 和 TypeScript 服务器 项目中,提炼并引领了语言服务器协议(Language Server Protocol, LSP)的拟定。编辑器只要使用LSP 协议就可用于 任何具备 LSP 兼容服务器的编程语言的开发。这意味着我 们可以继续使用自己喜爱的编辑器,同时也不必放弃各种编 程语言的高级编辑功能——这对于很多 Emacs 瘾君子来说 尤其利好。

          LORAWAN是一种低功耗广域网,专为低功耗、远距离和 低比特率的通信场景而设计。它提供了边缘设备与网关设 备之间的通信能力,能够通过后者将数据转发至应用程序 或者后台服务。LoRaWAN通常用于分布式传感器组或物联 网这些必须具备长电池寿命和远距离通信能力特点的设备 上。它解决了在使用一般的WiFi进行低功耗广域网通信时 的两个关键问题:通信距离和功耗。LoRaWAN已有若干实 现,其中值得注意的是一个免费的开源实现——The Things Network。

    随着机器学习从试验性使用转向生产环境, 需要一种可靠的方式来托管和部署这些可远 程访问的模型,并能随着消费者数量的增加 而进行扩展。 (TensorFlow Serving)

          MAPD是一个支持SQL的运行在GPU 上的内存列式分析性 数据库。我们对于数据库负载到底是I/O密集所致还是计算 密集所致有过争论。不过GPU的并行能力,结合 VRAM 的充 足带宽,在某些场景下非常有用。MapD可以透明地将最频 繁使用的数据(比如在group-by、过滤、计算操作以及 join 条件中所涉及的列)存放在VRAM中,而将其余的数据存放 在主内存中。通过这种内存管理方式,MapD无需索引即可 达到相当好的查询性能。尽管还有其他GPU数据库提供商, 随着MapD近期开源了其核心数据库,以及通过GPU开放分 析计划(GPU Open Analytics Initiative)的推广,MapD在 这个领域处于领先地位。如果你的分析任务是计算密集型 的,并能够利用GPU的并行性进行加速,且能纳入主内存 中,我们建议评估MapD。

          我们很喜欢那些能很好地解决单个问题的简单工 具。NETLIFY正是这样一个工具。用它可以创建静态网站内容,提交到GitHub,然后网站就能快速、轻松地上线可用了。Netlify提供命令行工具来控制流程,支持 CDN(内容分发网络),可以与Grunt这样的工具协同工 作。更重要的是Netlify支持HTTPS。 

          机器学习模型已经开始渗入到日常的商业应用中。当有足够 的训练数据可用时,这些算法可以解决那些以前可能需要 复杂的统计模型或试探法的问题。随着机器学习从试验性 使用转向生产环境,需要一种可靠的方式来托管和部署这 些可远程访问的模型,并能随着消费者数量的增加而进行 扩展。TENSORFLOW SERVING通过将远程gRPC接口暴 露给一个被导出来的模型,解决了上述部分问题。这支持以 多种方式部署训练完成的模型。TensorFlow Serving也接 受一系列的模型来整合持续的训练更新。其作者维护了一 个Dockerfile来简化部署过程。据推测,gRPC 的选择应与 TensorFlow 执行模型保持一致。但是,我们通常都会对需 要代码生成和本地绑定的协议保持警惕。

          凭借WINDOWS CONTAINERS,微软正在容器化的道路上 奋起直追。截至本期雷达,微软提供了2个可以在Docker容 器中运行的Windows OS的镜像——Windows Server 2016 Server Core和Windows Server 2016 Nano Server。尽管 Windows Container还有提升的空间,比如缩减镜像文件大 小,增强对生态系统的支持,以及完善相关文档,我们的团 队已经开始在其他容器化技术已经成功应用的场景(如构 建代理)中使用它们了。

          在中间件中实现业务逻辑和流程编排,特别是要在其中运 用专业技能和专用工具来将中间件作为一个单点来创建,以 实现规模化和控制,对此我们还是心怀顾虑的。API网关市 场竞争十分激烈,那些供应商们持续地向其产品中添加新 的功能,从而体现产品之间的差异化。这一点令上述趋势得 以持续。但这样会产生出过度庞大的API网关产品。其功能 在本质上就是反向代理,这助长了难以测试和部署的系统 设计。API网关确实可以提供一些处理某些特定问题的实用 程序——例如身份验证和速率限制——但是任何领域业务 逻辑都应该仅出现在应用程序或服务中,而不是网关中。

    关于工具:

    内容解读:

          我们的团队非常喜欢托管的 CI / CD工具——BUILDKITE, 因为它既简单,搭建速度又快。只需要安装一个轻量级的代 理应用程序来连接构建代理与在Buildkite上所托管的构建 服务,就可以使用私有或云端的机器来执行构建。与使用托 管的代理相比,能在这种级别上对构建代理的配置进行控 制,在多数情况下都是一个优势。

          CIRCLECI是一个持续集成引擎,它既可以在SaaS云服务上 使用,又可以私有部署使用。它已经被我们很多开发团队在 SaaS平台上当作常用CI工具。这些团队需要低摩擦(lowfriction)和易于搭建的构建与部署流水线。CircleCI 2.0的 版本支持构建任务的工作流,并具备扇入(fan-in)和扇出 (fan-out)流模式和手动触发模式,且支持移动开发。它也 允许开发者在本地运行流水线。另外 CircleCI 能很容易地与 诸如Slack及其他通知和报警系统进行集成。就像使用任何 其他承载公司资产的SaaS产品一样,我们建议用户仔细查 看CircleCI的安全实践。

    Gopass增加了诸如多用户密码管理、层级式 密码存储、交互式查找、基于时间的一次性 密码(TOTP),以及二进制存储格式等功能.(gopass)

          GOPASS是一个基于GPG和Git的团队密码管理解决方案。 它的前身是pass,并在此基础上增加了诸如多用户密码管 理、层级式密码存储、交互式查找、基于时间的一次性密码 (TOTP),以及二进制存储格式等功能。由于它的存储格式 与pass基本兼容,因此可以直接从pass迁移过来。这意味 着只需调用一次存储密钥就能将其集成到迁移的整备工作 流中。

          从2017年中开始,Chrome 用户有了一个在Headless模式 下运行浏览器的新选择。这非常适合执行那些依赖浏览器 的前端测试,而不必在屏幕上显示操作的结果。而在此之前,这属于 PhantomJS 的地盘,但Headless Chrome正在迅速取代那种用 JavaScript 驱动 WebKit 引擎的方法。测试在 Headless Chrome 浏览器中的运行速度要快得多,而且在行为上更贴近真实的浏览器,但我们的团队也发现它 比 PhantomJS 要占用更多内存。 基于上述优点,针对前端测试的HEADLESS CHROME 很可能成为这个领域的事 实标准。

          如果正在寻找用Go和Java编写的高性能 JSON 编码/解码 工具,那就试试开源库JSONITER,它与Go语言中的标准 JSON编码包相兼容。

    最初由Soundcloud开发的监控和时序数 据库工具Prometheus,不仅在进行持续 改进,而且其使用率也获得了一些提升。 (Prometheus)

          最初由Soundcloud开发的监控和时序数据库工具 Prometheus,不仅在进行持续改进,而且其使用率也获 得了一些提升。PROMETHEUS主要支持基于“拉动” 的HTTP模型,同时也能支持告警,这令其能够成为运维 工具箱中经常得到使用的工具。在本期技术雷达编撰过 程中,Prometheus 2.0正处于预发布阶段,并且还在不 断演进。Prometheus的开发者们正专注于核心时序数 据库以及各种可用的度量指标之上。对于Prometheus 用户来说,Grafana已成为首选的仪表板可视化工具,且 可以购买该工具的技术支持服务。我们的技术团队还发 现,Prometheus在索引和搜索能力上能够作为Elastic Stack很好的补充。

          APEX是一个能够轻松构建、部署和管理AWS Lambda 函 数的工具。有了Apex,就能使用AWS尚未原生支持的包括 Golang、Rust等在内的编程语言来编写函数。这一点是通过 Node.js shim来实现的。它会创建一个子进程,并通过标准 输入和输出来处理各种事件。Apex还有很多不错的特性,可 以改善开发者的体验。我们特别欣赏它能在本地测试函数 的能力,以及在将变更运用到AWS资源之前能对其进行预 演的能力。

          ASSERTJ-SWAGGER 是一个 AssertJ 工具库,能够用来验 证API的实现是否符合其契约规格。当 API 端点的实现发生 了更改但未更新其 Swagger 规格,或未能发布更新后的文 档时,我们的团队就能通过使用 assertj-swagger 来捕获这 些问题。

          修复 CI 上失败的端到端自动化测试会是一段痛苦的经历, 尤其是在 headless 模式下。而CYPRESS是一个很有用的 工具,它能帮助开发人员轻易地构建端到端自动化测试,并且把测试的步骤录制在一个 MP4 文件里。这使得开发者可 以通过查看测试视频来修复测试,而不是在headless模式 下去重现问题。Cypress 不仅是一个测试框架,更是一个强 大的测试平台。当前我们已经把其 CLI 集成到了我们项目的 headless CI 里。

          FLOW是一个针对 Javascript 的静态类型检查工具,它可 以为整个代码库逐步增加类型检查。不同于通过定义另一 种语言来实现静态类型检查的 Typescript 语言,Flow 可以 被逐步添加到支持 ECMAScript 第5、第6 以及 第7版的已有 Javascript 代码库中。我们建议把 Flow 添加到持续集成部 署流水线中,并从最关注的代码开始做静态类型检查。使用 Flow 能使代码更清晰,重构更可靠,并在构建过程的早期 就捕获到类型相关的代码缺陷。

          过去几年间,我们注意到分析笔记本应用(analy tics notebooks)的流行度在持续上升。这些应用都是从 Mathematica应用中获得灵感,能够将文本、数据可 视化和代码活灵活现地融入到一个具备计算能力的文档 中。在上个版本的技术雷达中我们所提到的基于Clojure 的GorillaREPL,就属于此类工具。但随着人们对机器 学习的兴趣不断增加,以及该领域中的从业者们逐渐将 Python作为首选编程语言,大家开始集中关注Python分 析笔记本了。其中JUPYTER看起来在ThougthWorks团队 中格外引人注目。

          Kong是一个由Mashape公司搭建和支持的开源API网关。该 公司也提供企业级产品,来将Kong与其专有的 API 分析和开 发者门户工具相结合。它们能以各种配置进行部署,来作为 边缘API网关或内部 API 代理。Kong 所基于的 OpenResty 通过其Nginx模块和用于扩展的Lua插件,为其强大和高效 的功能奠定了基础。Kong 既可以使用PostgreSQL进行单一 区域部署,也可以使用 Cassandra 进行多区域配置。我们的 开发人员已经享受到 Kong 的高性能、API 优先的方式 (能使其配置自动化)以及易于容器化部署的种种好处。不 像过度庞大的API网关那样,KONG API 网关只拥有更少的 功能,但实现了关键的API网关功能,如流量控制、安全性、 日志记录、监控和身份验证。 我们很高兴能在不久的将来 以一个 sidecar 配置的方式对 Kong 进行评估。

          KOPS是用于在生产环境上创建和管理高可用性 Kubernetes集群的命令行工具。 最初它针对AWS,但现在 已经对其他供应商提供了试验性支持。它可以快速地启动并 运行。虽然某些功能(如滚动升级)尚未开发完毕,但其社 区令人印象深刻。

          谷歌编写的LIGHTHOUSE工具可用于评估Web应用程 序是否遵守Progressive Web App标准。今年,新发布的 Lighthouse 2.0 向其基本工具集中新增了性能指标和可访 问性检查这些功能。这些新增功能现在已经被纳入 Chrome 标准开发者工具的 audit 选项卡下。Lighthouse 2.0 也是 Chrome headless 模式的另一个受益者。 鉴于该工具可以 由命令行直接执行,或作为Node.js应用程序独立运行,因此 Pa11y及类似工具提供了一种能在持续集成流水线中运行可 访问性检查的替代方案。

    JavaScript Web 富应用的一个老问题是如 何使这些页面的动态渲染部分可供搜索引擎 检索。无法渲染JavaScript的爬虫机器人可 以被路由到Rendertron服务器来进行渲染。 (Rendertron)

          JavaScript Web 富应用的一个老问题是如何使这些页面 的动态渲染部分可供搜索引擎检索。为此开发人员采用了 各种各样的技巧,包括使用React.js的服务端渲染,外部服 务或预渲染内容。现在谷歌 Chrome 新的 headless 模式 又贡献了一个新的技巧—— RENDERTRON,即 Chrome 的headless 渲染解决方案。它在一个 Docker 容器中封装 了一个 headless 的 Chrome 实例,可以作为独立的HTTP 服务器来部署。无法渲染JavaScript的爬虫机器人可以被 路由到此服务器来进行渲染。 虽然开发人员也可以部署 自己的 headless Chrome代理并配置相关的路由机制,但 Rendertron 简化了配置和部署过程,并提供了令爬虫机器 人进行检测和路由的中间件示例代码。

          SONOBUOY是一个以非破坏性的方式在任何Kubernetes 群集上运行端到端“合规性测试”的诊断工具。由两位 Kubernetes项目发起者创办的Heptio公司的团队构建了这 个工具,来确保各种Kubernetes发行版和配置都符合最佳 实践,同时遵循开源标准化原则以实现集群互操作性。我们 正在尝试使用Sonobouy作为“基础设施即代码”构建流水 线的一部分,并对Kubernetes安装进行持续监控,以验证整 个集群的行为和健康状况。

          如果用Spring框架来实现Java服务,那么可以考虑用 SPRING CLOUD CONTRACT来进行消费者驱动的契约测 试。目前,该工具的生态系统支持根据契约来验证客户端的 调用以及服务器端的实现。与Pact (一个开源的消费者驱 动契约测试工具集)相比,它不支持契约代理,也不支持其它编程语言。不过它能与Spring生态系统完美集成,比如使 用Spring Integration进行消息路由。

    关于语言和框架:

    内容解读:

          在往期的雷达中,我们不确定是否应该强烈推荐 ANGULAR,因为从本质上来说,它是一个新的、整体上 没那么让人兴奋的框架,仅仅是和那个我们曾经喜爱过 的 AngularJS 同名而已。目前已经进化到第5个版本的 Angular,在提供向后兼容性的同时,有了稳定的改进。我 们的一些团队已经在生产环境上应用 Augular,他们很满 意最终的效果。基于这个原因,在这一期雷达中,我们把 Angular 移到了“试验”阶段,来表示我们的一些团队现在 把它当作不二之选。然而我们的大多数团队,仍然会更倾向 于选择React, Vue 或者Ember。

          ASSERTJ是一个提供流式断言接口的Java库,可以很容易 在测试代码中传达测试的意图。AssertJ提供了可读的错误 信息、软断言以及改进过的对集合和异常支持。我们看到一 些团队默认选择使用它,而不是JUnit和Hamcrest组合。

    CSS网络布局(CSS Grid Layout)是一个二维(two-dimensional)的基于网格的布局系统, 它所提供的机制使用了一组可预测的尺寸调整行为,将布局的可用空间划分为行和列 

          即使CSS没有为创建布局提供明确的支持,但它依然是 网页布局的首选。Flexbox提供了更简单的,一维(onedimensional)的布局, 但开发人员通常还是会采用一些 库和工具包实现更复杂的布局。CSS网格布局(CSS Grid Layout)是一个二维(two-dimensional)的基于网格的布局 系统, 它所提供的机制使用了一组可预测的尺寸调整行为, 将布局的可用空间划分为行和列。它不需要任何额外的库, 并能与Flexbox和其他CSS元素集成得很好。然而, 由于IE11 仅支持其部分规范, 所以目前仍然依赖 Windows 7上IE浏览 器的用户需求会被忽略。

          大多数大型CSS代码库都需要复杂的命名机制来避免全局 命名空间中的冲突。CSS MODULES通过为每个CSS文件中 的所有class创建局部作用域来解决这些问题。当这个文件 被导入到一个JavaScript模块,其中的CSS class可以通过名 称字符串来引用。然后,在构建工具(Webpack,Browserify 等)中,class名称被替换为自动生成的全局唯一字符串。这 是一个重大的职责转换。以前,人们不得不通过管理全局命 名空间来避免class命名冲突的问题,现在这个职责移交给 构建工具。我们在CSS Modules遇到了一点小麻烦:功能测 试经常会超出局部作用域,因此不能通过CSS文件中定义的 名称来引用class。针对这个问题,我们建议使用ID或是data 属性作为替代方案。 

    Jest是一个“零配置”的前端测试工具,具有 诸如模拟和代码覆盖之类的开箱即用特性, 主要用于React和其他JavaScript框架。

          我们团队对采用JEST做前端测试的结果非常满意。它提 供了一种“零配置”的开发体验,并具备诸多开箱即用的功 能,比如 mock 和代码覆盖率。你不仅可以将此测试框架 应用于React.js应用程序,也可以应用于其他 JavaScript 框 架。Jest 经常被夸大的特性之一是 UI 快照测试。快照测试 可以作为测试金字塔上层一个很好的补充,但请记住,单元 测试仍然是坚实的基础。

    Jest系列教程

          对Android的完美支持为迅速发展的KOTLIN语言提供了 额外的推动力,我们也正在密切关注Kotlin / Native(基于LLVM,可以将Kotlin代码编译为原生可执行文件)的进展。在 使用Anko库开发Android应用时,我们已经尝到了空指针安 全、数据类和易于构建DSL的甜头。尽管初始编译速度慢, 且只有IntelliJ才提供一流的IDE支持,但我们仍然建议尝试 一下这种新颖简洁的现代语言。

          SPRING CLOUD在持续演进的过程中增加了许多有趣的 新特性。例如在spring-cloud-streams项目中,对Kafka Streams绑定的支持让采用Kafka和RabbitMQ通过连接 器构建消息驱动的应用变得相对容易。正在使用该特性的 ThoughtWorks的团队都认同它能在使用像Zookeeper这样 的复杂基础设施时提供便捷性,也对构建分布式系统时需 要解决的常见问题提供支持,例如使用spring-cloud-sleuth 进行跟踪。目前我们已成功将它应用在多个项目中,不过大家仍然需要注意其适用场景。

          一直以来,Google的Android文档实例缺乏架构和结构。 随着ANDROID架构组件的发布,这种状况有所改善,这 是一组有主见的库,它们帮助开发者用更好的架构创建 Android 应用程序。 它们解决了Android开发的长期痛点: 处理生命周期,分页,SQLite数据库以及配置变更时的数据 持久化。这些库无须一起使用,你可以选择最需要的集成到 现有项目中。

          我们在移动增强现实中看到了很多令人激动的活动,其中 大部分来自ARKIT(Apple提供的原生AR库)/ARCORE (Google提供的原生AR库)的加持。 这些库将移动AR技术 带入主流,让后者得到大量采用。尽管如此,各大公司在寻 找真实的用户场景(而非一些花哨的Demo)和真正增强用 户体验的解决方案方面还是面临挑战。

          多应用策略备受争议,尤其现在越来越少的用户愿意再下 载新的应用程序。不同于推出一个新的应用然后为下载量 而努力,许多团队必须通过一个已经被广泛安装的应用来 发布新的功能,这给应用程序的架构带来了挑战。ATLASBEEHIVE是分别用于Android和iOS的模块化解决方案。 它们能让多个团队工作于物理隔离的不同模块,并且从一 个门面应用中重新组装或者动态加载这些模块。它们都是 Alibaba的开源项目,因为Alibaba也曾面临同样的下载量减 少和单个应用架构挑战的问题。

          “你并不需要一个规则引擎”,这常常是选择规则引擎时的 首要法则,因为我们已经见到太多的人基于一些臆想的理 由,将自己绑定在难以测试的黑盒的的规则引擎上——原本 定制化应该是更好的解决方案。虽说如此,在一些规则引擎 确实适用的场合,我们采用 CLARA RULES 取得了很好的 成功。不同于其他的规则引擎,它使用简单的 Clojure 代码 来表达和执行规则,这意味着规则可以被很好地重构、测试 和版本化。比起追求“业务人员可以直接编辑业务规则”的 错觉,Clara Rules 能够很好地驱动业务专家和开发人员之 间的合作。

          CSS IN JS是一种用JavaScript编写CSS样式的技术,通 过鼓励采用一种通用模式,编写样式以及应用样式的 JavaScript组件,使样式和逻辑的关注点得到统一。该领域 中的新秀——诸如JSS,emotion和styled-components,依 靠工具来将CSS-in-JS代码转化成独立的CSS样式表,从而 适合在浏览器里运行。这是在JavaScript中编写CSS的第二 代方法,与以前的方法不同,它不依赖于内联样式,这意味 着它能支持所有CSS特性,使用npm生态共享CSS以及跨 平台使用组件。我们的团队发现styled-components很适 合像React这样基于组件的框架,并且可以使用jest-styledcomponents做CSS的单元测试。这是个新兴的领域且变化 迅速。用该方法时,在浏览器里人工调试生成的class名称会 需要费些功夫,并且可能不适用于那些前端架构不支持重用 组件并需要全局样式的项目。

          DIGDAG是一个在云中构建、运行、调度和监控复杂数据管 道的工具。你可以使用丰富的开箱即用操作符在YAML中定 义这些管道,也可以通过API构建属于自己的管道。Digdag 具有数据管道解决方案中的大多数常见功能,例如依赖关 系管理、易于复用的模块化工作流、安全的密码管理和多语 言支持。我们最感兴趣的功能是它对多种云平台的支持,这 允许你通过AWS RedShift,S3和Google BigQuery等服务来 移动和连接数据。随着越来越多的云提供商提供相互竞争 的数据处理解决方案,我们认为Digdag(以及类似的工具) 是充分利用这些平台的最佳选择。

          DRUID是一个具有丰富的监控特性的JDBC连接池。它有一 个内置的SQL解析器,提供了对数据库中执行的SQL语句语 义级别的监控。注入或可疑的SQL语句将被拦截,并直接在 JDBC层记录下来。查询也可以基于它们的语义进行合并。 这是一个阿里巴巴开源的项目,它反映了阿里巴巴从自己的 数据库系统中学到的教训。

    Android架构组件是一组有主见的类库,能 够帮助开发者用更好的架构创建 Android 应用程序。 (Android架构组件)

          ECHARTS是一个轻量级的图表库,对不同类型的图表和交 互有丰富的支持。ECharts完全基于Canvas API,因此即使 处理100k +数据点也具有令人难以置信的性能,并且还针对 移动用户进行了优化。 凭借其扩展项目ECharts-X,它还可 以支持3D绘图。ECharts 是一个百度开源项目。

          Go语言能够被编译为裸片上运行的目标程序,这使得嵌入 式系统开发领域对它的兴趣与日俱增 。GOBOT是一个用于 机器人、物理计算和物联网(IoT)的框架,它基于Go语言编 写,并且支持多个平台。我们在一个对实时性响应没有要求 的实验性机器人项目中使用了GoBot,并且用GoBot创建了 开源的软件驱动。GoBot的HTTP API使其与移动设备的集 成十分容易,从而能创建更丰富的应用。

          ThoughtWorks的许多移动开发团队对一款可以检测 Android和Java中令人讨厌的内存泄漏工具LEAKCANARY 感到非常兴奋。LeakCanary与App集成非常简单,同时它也 提供能够清晰回溯内存泄漏原因的通知。把它加到你的工 具包,它可以帮你节省在多个设备上排查内存泄漏的时间。

          PYTORCH是Lua机器学习框架Torch在Python语言下的 完整重写版。比起Tensorflow,它还很新不够成熟,但在 程序员的眼里它却很好用。 因其面向对象的特性和原生 的Python实现,模型可以表达得更加清晰简洁,并可以 在执行过程中调试。尽管最近涌现出了许多这类框架,但 PyTorch拥有Facebook和广泛合作伙伴的支持,包括应该 会继续支持CUDA架构的NVIDIA。ThoughtWorks的团队发 现,PyTorch在模型的设计开发及试验阶段拥有着明显的 优势,但在大规模的生产环境中的训练及实现仍然离不开 TensorFlow。

          SINGLE-SPA是一个JavaScript元框架,它允许我们使用 不同的框架构建微前端,而这些框架可以共存于单个应用 中。 一般来说,我们不建议在单个应用中使用多个框架, 但有时却不得不这么做。 例如当你在开发遗留系统时,你 希望使用现有框架的新版本或完全不同的框架来开发新功 能,single-spa就能派上用场了。鉴于很多JavaScript框架都 昙花一现,我们需要一个解决方案来应对未来框架的变化, 以及在不影响整个应用的前提下进行局部尝试。在这个方向 上,single-spa是一个不错的开始。

          智能合约编程需要一种比交易处理脚本更具表现力的语 言。在众多为智能合约设计的新编程语言中,SOLIDITY是最受欢迎的。这是一种面向合约的静态类型语言,其语法类似于JavaScript。 它抽象了智能合约中自我实现的业务逻辑。围绕Solidity的工具链也在快速成长。如今,Solidity是 Ethereum平台的首选编程语言。鉴于已部署智能合约的不 可变性,对依赖的严格测试和审计是至关重要的。

          TENSORFLOW MOBILE使开发人员可以将各种理解和分 类技术融入其iOS或Android应用程序。 考虑到手机上可用 的传感器数量及其可收集的数据范围,这一点尤其有用。预先训练好的TensorFlow模型可以加载到移动应用程序 中,并应用于实时视频帧,文本,语音等输入的处理中。手机 为实现这些计算模型提供了一个令人惊讶的合适的平台。 TensorFlow模型导出和加载的文件格式都是protobuf文件, 这可能会为实现者带来一些问题。 Protobuf的二进制格式 让检查模型很难,并要求你将正确的protobuf库版本链接到 移动应用程序。但是,本地模型的执行,提供了一个很有吸 引力的针对TensorFlow Serving的替代方案,这可以节省远 程执行的通信开销。

    我们在适合规则引擎的场景采用 Clara Rules 取得了很好的成功。我们喜欢通过它 用简单的 Clojure 代码来表达和执行规则, 这意味着规则可以被很好地重构、测试和版 本化。 (Clara rules) 

          TRUFFLE是一个开发框架。它将现代化的 Web 开发体验 带到了Ethereum平台。Truffle 接管了智能合约编译、库链 接和部署,以及在不同区块链网络中处理制品的工作。我 们喜爱 Truffle 的原因之一就是它鼓励开发者为智能合约编 写测试。这一点非常值得重视,因为智能合约的编写通常 涉及到金钱。得益于其内置的测试框架以及与TestRPC 的 集成,Truffle 可以允许我们使用 TDD 的方式来编写智能合 约。我们期望出现更多像 Truffle 的技术能促进在区块链领 域中的持续集成实践。

          WEEX是一套跨平台移动应用开发方案,采用了Vue.js的组 件化语法。对于那些偏爱Vue.js简洁性的开发者,Weex是 一个开发原生移动应用切实可行的选择,但同时也能胜任 非常复杂的应用。已经有大量的复杂的应用构建于Weex框 架,其中包括中国最流行的两款移动应用程序——天猫和淘 宝。Weex最初由阿里巴巴开发,目前是Apache孵化项目。

     

     写在最后:

      关于技术雷达可访问thoughtworks官网获取最新,也可添加订阅:https://www.thoughtworks.com/cn/radar

    转载于:https://www.cnblogs.com/Wolfmanlq/p/8097663.html

    展开全文
  • -来自Facebook的数据交换格式。 Persistent Collection -Java Collections框架的持久和不变的模拟。 Protobuf - Google的数据交换格式 SBE - 简单的二进制编码,是最快的消息格式之一。 Wire -清洁,...

    Java资源大全中文版(Awesome最新版)

    Awesome系列的Java资源整理。awesome-java 就是akullpp发起维护的Java资源列表,内容包括:构建工具、数据库、框架、模板、安全、代码分析、日志、第三方库、书籍、Java 站点等等。

    业务流程管理套件

    流程驱动的软件系统构建,中间件。

    • jBPM:非常灵活的业务流程管理框架,致力于构建开发与业务分析人员之间的桥梁。 官网
    • Activiti:新一代的开源 BPM 引擎,核心是基于 Java 的超快速、超稳定的 BPMN 2.0 流程引擎,强调流程服务的可嵌入性和可扩展性。 官网 下载

    经典的工具与库 (Ancients)

    In existence since the beginning of time and which will continue being used long after the hype has waned.自从一开始就存在,并且在炒作已经消失之后将继续使用。

    • Apache Ant -使用XML构建流程管理。
    • Apache Hadoop - 商品硬件集群数据集的存储和大规模处理。
    • Apache OpenNLP - 用于常见任务(如标记化)的工具包。
    • Apache Velocity -一般HTML页面,电子邮件或源代码生成的模板。
    • FreeMarker -一般模板引擎没有任何重量级或意见依赖。
    • GlassFish - Oracle支持的Java EE的应用服务器和参考实现。
    • GWT - 工具箱包括客户端代码的Java到JavaScript编译器,XML解析器,RPC的API,JUnit集成,GUI的国际化支持和小部件。
    • HornetQ -清晰,简洁,模块化,并被嵌入。
    • Hudson - 持续集成服务器仍在积极发展。
    • Java Modeling Language (JML) - 行为接口规范语言,可用于指定代码模块的行为。 它结合了埃菲尔的合同方式的设计和界面规范语言的Larch系列的基于模型的规范方法,以及细化演算的一些要素。 由其他几种验证工具使用。
    • JavaCC - 更具体,稍微更容易学习。
    • JavaServer Faces - Oracle的开源实施JSF标准,Mojarra。
    • JavaServer Pages - 具有自定义标签库的网站的常用模板。
    • JUnit - 通用测试框架。
    • Launch4j - 将JAR包装在轻量级和本机Windows可执行文件中。
    • Quartz - 具有Apache 2.0许可证的开源作业调度程序库。
    • TestNG - 测试框架。
    • Trove - 原始集合

    Bean映射 (Bean Mapping)

    Frameworks that ease bean mapping.简化Bean映射的框架。

    • Dozer - 使用注释,API或XML配置将数据从一个对象复制到另一个对象的映射器。
    • JMapper - 使用字节码操作进行闪电快速映射。 支持注释,API或XML配置。
    • MapStruct - 代码生成器,它简化了不同bean类型之间的映射,基于配置方法的约定。
    • ModelMapper -ModelMapper是一个智能对象映射库,可自动映射对象。
    • Orika - Orika是一个Java Bean映射框架,它将数据从一个对象递归到另一个对象.
    • Selma - 愚蠢简单的静态链接映射器。 Selma是一个基于注释处理器的bean映射器。

    构建工具 (Build)

    Tools which handle the build cycle and dependencies of an application.处理应用程序的构建周期和依赖关系的工具。

    • Apache Maven - 声明式构建和依赖关系管理,有利于配置的约定。 可能更喜欢Apache Ant,它使用相当程序的方法,可能难以维护。
    • Bazel - 从Google构建工具,快速可靠地构建代码。
    • Gradle -通过Groovy编程的增量构建,而不是声明XML。 适用于Maven依赖管理。

    字节码操作 (Bytecode Manipulation)

    Libraries to manipulate bytecode programmatically.以编程方式操纵字节码的库。

    • ASM - 所有目的,低级别,字节码操作和分析。
    • Byte Buddy - 进一步简化使用流畅API的字节码生成。
    • Byteman - 运行时通过DSL(规则)操作字节码,主要用于测试/故障排除。
    • cglib - 字节代码生成库。
    • Javassist -试图简化字节码的编辑。

    缓存 (Caching)

    Libraries which provide caching facilities.提供缓存设施的图书馆。

    • Caffeine -高性能,接近最佳缓存库。
    • Ehcache - 分布式通用缓存。

    群集管理 (Cluster Management)

    Frameworks which can dynamically manage applications inside of a cluster.可以动态管理集群内的应用程序的框架。

    • Apache Aurora - Apache Aurora是用于长时间运行服务和cron作业的Mesos框架。
    • Apache Mesos - 从机器上摘取CPU,内存,存储和其他计算资源。
    • Singularity - 奇异性是一种Mesos框架,使部署和操作变得容易。 它支持Web服务,后台工作人员,预定工作和一次性任务。

    代码分析 (Code Analysis)

    Tools that provide metrics and quality measurements.提供指标和质量测量的工具

    • Checkstyle - 编码惯例和标准的静态分析。
    • Codacy - 持续的静态分析,代码覆盖率和软件指标,以自动执行代码审查。
    • Error Prone -将常见的编程错误视为编译时错误。
    • FindBugs - 字节码的静态分析以发现潜在的错误。
    • Infer - 产生潜在错误列表的工具。
    • jQAssistant - 使用基于Neo4J的查询语言进行静态代码分析。
    • PMD - 用于查找不良编码实践的源代码分析。
    • SonarQube - 通过插件集成其他分析组件,并随时间提供指标的概述。
    • Spoon - 用于分析和转换Java源代码的库。

    代码覆盖 (Code Coverage)

    Frameworks and tools that enable collection of code coverage metrics for test suites.允许收集测试套件的代码覆盖率指标的框架和工具。

    • Clover -Atlassian的专有代码覆盖工具,依赖于源代码检测,而不是字节码检测.
    • Cobertura - 依赖离线(或静态)字节码仪器和类加载来收集代码覆盖度量; GPLv2许可
    • JaCoCo -使用离线和运行时字节码工具集的代码覆盖率指标的框架; EclEmma,Eclipse代码覆盖插件突出使用。

    代码生成 (Code Generators)

    Tools that generate patterns for repetitive code in order to reduce verbosity and error-proneness.生成重复代码模式的工具,以减少冗长度和错误倾向。

    • ADT4J - 用于代数数据类型的JSR-269代码生成器。
    • Auto -生成工厂,服务和价值类。
    • FreeBuilder - 自动生成Builder模式。
    • Immutables - 注释处理器生成简单,安全和一致的值对象.
    • JHipster - 用于Spring Boot和AngularJS的Yeoman源代码生成器。
    • Joda-Beans - 小型框架可以将可查询的属性添加到Java中,从而增强JavaBeans.
    • Lombok -旨在减少冗长度的代码生成器。

    命令行参数解析器 (Command-line Argument Parsers)

    Libraries that make it easy to parse command line options, arguments, etc.可以方便地解析命令行选项,参数等的库

    • Airline -用于解析Git的基于注释的框架,如命令行参数。
    • args4j - 小库来解析类似于javac的参数。
    • JCommander -命令行参数通过实现接口解析框架与自定义类型和验证.
    • JOpt Simple -使用POSIX getopt()和GNU getopt_long()语法的简单解析器。 不使用注释,而是使用流畅的API。

    编译器 (Compiler-compiler)

    Frameworks that help to create parsers, interpreters or compilers.有助于创建解析器,解释器或编译器的框架。

    • ANTLR -复杂的全功能框架,用于自顶向下的解析。
    • JFlex -词汇分析仪

    配置 (Configuration)

    Libraries that provide external configuration.提供外部配置的库。

    • config - JVM语言的配置库。
    • ini4j - 提供一个处理Windows的INI文件的API。
    • owner - 减少属性样板。
    • KAConf - 基于注释的Java和Kotlin配置系统。

    约束满足问题求解器(Constraint Satisfaction Problem Solver)

    Libraries that help on implementing optimization and satisfiability problems.有助于实现优化和可满足性问题的库。

    • Choco - 使用约束编程技术的现成约束满足问题求解器。
    • JaCoP -包括FlatZinc语言的界面,使其能够执行MiniZinc模型。
    • OptaPlanner - 业务规划和资源调度优化求解器。

    持续整合(Continuous Integration)

    Tools which support continuously building, testing and releasing applications.支持连续构建,测试和发布应用程序的工具。

    • Bamboo -Atlassian的解决方案与其他产品的良好整合。 您可以申请开源许可证或购买。
    • Concourse -提供具有可在版本控制中保存的配置的码头化管道。
    • fabric8 - 集装箱集成平台。
    • Go - ThoughtWorks开源解决方案。
    • Jenkins -提供基于服务器的部署服务。
    • TeamCity - JetBrains CI解决方案免费版本。
    • Travis - 托管服务经常用于开源项目。

    (CSV)

    Frameworks and libraries that simplify reading/writing CSV data.简化读取/写入CSV数据的框架和库。

    • opencsv - 简单的CSV解析器
    • Super CSV -强大的CSV解析器,支持Dozer,Joda-Time和Java 8。
    • uniVocity-parsers -其中一个速度最快,功能最完整的CSV。 还附带TSV和固定宽度记录的解析器。

    数据库(Database)

    Everything which simplifies interactions with the database.一切都简化了与数据库的交互。

    • Apache Hive -数据仓库基础设施建在Hadoop之上。
    • Apache Phoenix - 用于低延迟应用的HBase高性能关系数据库层。
    • Chronicle Map - 高效的内存中(选择持久存储到磁盘)非堆栈键值存储。
    • eXist - 一个NoSQL文档数据库和应用平台。
    • FlexyPool - 为最常见的连接池解决方案提供指标和故障转移策略。
    • Flyway - 简单的数据库迁移工具。
    • H2 - 小型数据库显示其内存中的功能。
    • HikariCP - 高性能JDBC连接池。
    • JDBI -JDBC的方便抽象。
    • Jedis - 与redis交互的小客户端,具有命令的方法。
    • jOOQ -生成基于SQL模式的类型安全代码。
    • Liquibase - 数据库独立库,用于跟踪,管理和应用数据库模式更改。
    • MapDB -嵌入式数据库引擎,提供在磁盘或非堆内存中支持的并发集合。
    • Presto -分布式SQL查询引擎,用于大数据。
    • Querydsl -Typesafe统一查询。
    • Realm - 移动数据库直接在手机,平板电脑或可穿戴式电脑内部运行。
    • Redisson -在Redis服务器之上允许分布式和可扩展的数据结构。
    • Speedment - 利用Java 8 Stream API进行查询的数据库访问库。
    • sql2o -简化JDBC封装,简化了数据库访问,并简化了将ResultSet映射到POJO。
    • Vibur DBCP - 提供高级性能监控功能的JDBC连接池库

    数据结构(Data structures)

    Efficient and specific data structures.高效和具体的数据结构。

    • Apache Avro - 数据交换格式包括动态打字,未标记数据,缺少手动分配的ID。
    • Apache Orc -用于基于hadoop的工作负载的快速高效的柱状存储格式。
    • Apache Parquet -基于谷歌Dremel的汇编算法的柱状存储格式。
    • Apache Thrift -来自Facebook的数据交换格式。
    • Persistent Collection -Java Collections框架的持久和不变的模拟。
    • Protobuf - Google的数据交换格式
    • SBE - 简单的二进制编码,是最快的消息格式之一。
    • Wire -清洁,轻便的协议缓冲区。

    日期和时间(Date and Time)

    Libraries related to handling date and time.与处理日期和时间相关的图书馆。

    • Almanac Converter - 不同日历系统之间的简单转换。
    • Joda-Time - Java 8之前的事实上的标准日期/时间库。
    • ThreeTenBP - Joda-Time作者的JSR 310端口(java.time包)。
    • Time4J - 高级日期和时间库。

    依赖注入(Dependency Injection)

    Libraries that help to realize the Inversion of Control paradigm.有助于实现控制范式反转的图书馆。

    • Apache DeltaSpike - CDI扩展框架。
    • Dagger2 -无反射的编译时注入框架。
    • Guice -轻巧但功能强大的框架,完成匕首。
    • HK2 - 轻量级和动态依赖注入框架。

    开发(Development)

    Augmentation of the development process at a fundamental level.将发展进程扩大到根本层面。

    • AspectJ - 无缝面向方面的编程扩展。
    • DCEVM - 修改JVM,允许在运行时无限制地重新定义加载的类。
    • Faux Pas -通过规避Java运行系统中的任何功能接口默认情况下不允许引发检查异常的问题来简化错误处理的库。
    • HotswapAgent -无限运行时类和资源重新定义。
    • JRebel

    - 立即重新加载代码和配置更改,无需重新部署。

    分布式应用(Distributed Applications)

    Libraries and frameworks for writing distributed and fault-tolerant applications.用于编写分布式和容错应用程序的库和框架。

    • Akka -用于构建并发,分布式和容错事件驱动应用程序的工具包和运行时。
    • Apache Storm -实时计算系统
    • Apache ZooKeeper - 协调服务与大型分布式系统的分布式配置,同步和命名注册表。
    • Atomix -容错分布式协调框架。
    • Axon Framework - 创建CQRS应用程序的框架。
    • Copycat - 容错状态机复制框架。
    • Hazelcast - 高度可扩展的内存数据网格。
    • Hystrix - 提供延迟和容错。
    • JGroups - 用于可靠消息传递和创建集群的工具包。
    • Orbit - 虚拟演员,为传统演员增添了另一个抽象层次。
    • Quasar -用于JVM的轻量级线程和actors。

    分布式数据库(Distributed Databases)

    Databases in a distributed system that appear to applications as a single data source.分布式系统中的应用程序显示为单个数据源的数据库。

    • Apache Cassandra - 面向列,提供高可用性,无单点故障。
    • Apache HBase -Hadoop数据库用于大数据。
    • Druid -实时和历史的OLAP数据存储,优于聚合和近似查询。
    • Infinispan - 用于缓存的高度并发键/值数据存储。
    • OpenTSDB -可扩展和分布式的时间序列数据库写在Apache HBase之上。
    • OrientDB -嵌入式分布式数据库写在Hazelcast之上。

    分发(Distribution)

    Tools which handle the distribution of applications in native formats.以原生格式处理应用程序分发的工具。

    • Bintray -处理发布的二进制文件的版本控制。 也可以与Maven或Gradle一起使用,并提供开源软件或几项业务计划的免费计划。
    • Boxfuse -使用Immutable Infrastructure的原理将JVM应用程序部署到AWS。
    • Capsule -简单而强大的包装和部署。 类固醇上的脂肪JAR或支持JVM优化容器的“Docker for Java”。
    • Central Repository - 最大的二进制组件存储库可作为开源社区的免费服务。 Apache Maven使用的默认值,可用于所有其他构建工具。
    • IzPack -用于跨平台部署的安装程序创作工具。
    • JitPack -易于使用的GitHub软件包存储库。 根据需要构建Maven / Gradle项目,并发布即用型软件包。
    • Nexus - 具有代理和缓存功能的二进制管理。
    • packr -在Windows,Linux和Mac OS X上打包JAR,资产和本机分发的JVM。
    • really-executable-jars-maven-plugin - 用于自行执行JAR的Maven插件。

    文件处理(Document Processing)

    Libraries that assist with processing office document formats.协助处理办公文件格式的图书馆。

    • Apache POI - 支持OOXML(XLSX,DOCX,PPTX)以及OLE2(XLS,DOC或PPT)。
    • documents4j - 使用第三方转换器(如MS Word)进行文档格式转换的API。
    • docx4j - 创建和操作Microsoft Open XML文件。

    格式验证(Formal Verification)

    Formal-methods tools: proof assistants, model checking, symbolic execution etc.正式方法工具:证明助理,模型检查,符号执行等

    • CATG -卷积单元测试引擎。 使用正式方法自动生成单元测试。
    • Checker Framework - 可插拔式系统。 包括无效类型,物理单位,不变性类型等。
    • Daikon - Daikon检测可能的程序不变量,并可以根据这些invariats生成JML规范。
    • Java Path Finder (JPF) - 包含模型检查器的JVM形式验证工具等。 由NASA创建..
    • JMLOK 2.0 -通过反馈导向的随机测试生成检测代码和JML规范之间的不一致,并建议检测到每个不一致的可能.
    • KeY - KeY系统是一种正式的软件开发工具,旨在尽可能无缝地集成面向对象软件的设计,实现,形式规范和形式验证。 使用JML进行规范和符号执行来进行验证。
    • OpenJML - 将JML规范转换为SMT-LIB格式,并将程序隐含的证明问题传递给后端求解器

    功能编程(Functional Programming)

    Libraries that facilitate functional programming.促进功能编程的库。

    • cyclops-react - Monad和流实用程序,理解,模式匹配,所有JDK集合的功能扩展,未来流,蹦床等等。
    • derive4j - Java 8注解处理器和用于导出代数数据类型构造函数,模式匹配,态射的框架。
    • Fugue - 功能延伸
    • Functional Java - 实现许多基础和高级编程抽象,有助于面向组件的开发。
    • Javaslang - 提供持久数据类型和功能控制结构的功能组件库。
    • jOOλ - 扩展到Java 8,其目的是解决lambda中的差距,提供大量缺失类型和丰富的一系列顺序Stream API添加。.
    • protonpack - 流实用程序的集合
    • StreamEx - 增强Java 8流。

    游戏开发(Game Development)

    Frameworks that support the development of games.支持游戏开发的框架。

    • jMonkeyEngine - 用于现代3D开发的游戏引擎。
    • libGDX - 全面跨平台,高层次框架。
    • LWJGL - 强大的框架,可以抽象出OpenGL / CL / AL等库。

    地理空间(Geospatial)

    Libraries for working with geospatial data and algorithms.用于处理地理空间数据和算法的库。

    • Apache SIS - 图书馆开发地理空间应用
    • Geo - Java中的GeoHash实用程序
    • Geotoolkit.org - 翻译时出错用于开发地理空间应用的图书馆。 建立在Apache SIS项目的顶部
    • GeoTools - 为地理空间数据提供工具的图书馆。
    • GraphHopper - 道路引擎引擎。 用作Java库或独立Web服务。
    • H2GIS - H2数据库的空间扩展。
    • Jgeohash - 可以帮助Java开发人员使用GeoHash算法的库。
    • Mapsforge - 基于OpenStreetMap数据渲染地图的软件。
    • Spatial4j - 通用空间/地理空间ASL许可的开源Java库。

    图形用户界面(GUI)

    Libraries to create modern graphical user interfaces.图书馆创建现代图形用户界面。

    • JavaFX - 摇摆不定的继承人
    • Scene Builder - JavaFX应用程序的可视化布局工具。
    • SWT -标准窗口小部件工具包(SWT)是一个用于Java平台的图形窗口小部件工具包。

    高性能(High Performance)

    Everything about high performance computation, from collections to specific libraries.关于高性能计算的一切,从集合到特定的库。

    • Agrona -高性能应用中常见的数据结构和实用方法。
    • Disruptor - 跨线程消息传递库。
    • Eclipse Collections - 集合框架灵感来自于Smalltalk。
    • fastutil - 快速和紧凑的类型特定的集合.
    • HPPC - 原始集合。
    • JCTools -JDK目前缺少并发工具。
    • Koloboke -哈希集和散列图。

    超媒体类型(Hypermedia Types)

    Libraries that handle serialization to hypermedia types.处理对超媒体类型的序列化的库。

    集成开发环境(IDE)

    Integrated development environments that try to simplify several aspects of development.集成开发环境,试图简化开发的几个方面。

    • Eclipse -成立的开源项目,支持大量的插件和语言。
    • IntelliJ IDEA -支持很多JVM语言,为Android开发提供了很好的选择。 商业版针对企业部门
    • NetBeans - 提供从数据库访问到HTML5的多个Java SE和EE功能的集成。

    图像处理(Imagery)

    Libraries that assist with the creation, evaluation or manipulation of graphical images.协助创建,评估或操纵图形图像的图书馆。

    • Imgscalr - 在纯Java 2D中实现的简单高效的硬件加速映像扩展库。
    • Tess4J - Tesseract OCR API的JNA包装器。
    • Thumbnailator - 缩略图是Java的高质量缩略图生成库。
    • TwelveMonkeys - 收集扩展支持的图像文件格式数量的插件。
    • ZXing -多格式1D / 2D条形码图像处理库。

    (JSON)

    Libraries for serializing and deserializing JSON to and from Java objects.用于将JSON序列化和反序列化为Java对象的库。

    • Genson - 强大而易用的Java到JSON转换库。
    • Gson - 将对象序列化为JSON,反之亦然。 良好的性能与即时使用。
    • Jackson-datatype-money - 开源的杰克逊模块支持JavaMoney数据类型的JSON序列化和反序列化。
    • Jackson -与GSON类似,但如果您需要更频繁地实例化库,则性能将会得到提升。
    • JSON-io -将Java转换为JSON。 将JSON转换为Java。 漂亮的打印JSON。 Java JSON序列化程序.
    • LoganSquare - 基于Jackson流式API的JSON解析和序列化库。 优于GSON&Jackson的图书馆。

    JSON处理(JSON Processing)

    Libraries for processing data in JSON format.以JSON格式处理数据的库。

    • fastjson - 非常快的处理器,无需额外的依赖关系和完整的数据绑定。
    • Jolt -JSON到JSON转换工具。
    • JsonPath - 使用XPATH类似语法从JSON中提取数据。
    • JsonSurfer - Streaming JsonPath处理器专用于处理大而复杂的JSON数据。

    虚拟机与Java开发工具(JVM and JDK)

    Current implementations of the JVM/JDK.JVM / JDK的当前实现。

    • Avian - JVM具有JIT和AOT模式。 包括一个iOS端口。
    • JDK 9 -早期访问版本的JDK 9。
    • OpenJDK - Linux的开源实现。
    • ParparVM -虚拟机与iOS的非阻塞并发GC。
    • Zulu OpenJDK 9 - 早期访问OpenJDK 9构建用于Windows,Linux和Mac OS X.
    • Zulu OpenJDK -OpenJDK通过Java 8构建Windows,Linux和Mac OS X。

    日志(Logging)

    Libraries that log the behavior of an application.记录应用程序行为的库。

    • Apache Log4j 2 - 用强大的插件和配置架构完成重写。
    • Graylog - 适合扩展角色和权限管理的开源聚合器。
    • Kibana - 分析和可视化日志文件。 某些功能需要付款。
    • Logback - 通过Groovy有趣的配置选项的强大的日志库.
    • Logbook - 可扩展的开源库,用于HTTP请求和响应日志记录。
    • Logstash -用于管理日志文件的工具。
    • SLF4J -与实现一起使用的抽象层。
    • tinylog -具有静态记录器类的轻量级日志框架。
    • Tracer - 在分布式系统中调用跟踪和日志关联。

    机器学习(Machine Learning)

    Tools that provide specific statistical algorithms which allow learning from data.提供允许从数据学习的特定统计算法的工具。

    • Apache Flink - 快速可靠的大型数据处理引擎。
    • Apache Mahout - 可扩展算法侧重于协同过滤,聚类和分类。
    • Apache Spark - 数据分析集群计算框架。
    • DeepDive - 从非结构化数据创建结构化信息并将其集成到现有数据库中。
    • Deeplearning4j -分布式多线程深层学习库。
    • H2O -用于统计大数据的分析引擎。
    • JSAT - 用于预处理,分类,回归和聚类的算法,支持多线程执行。
    • Oryx 2 -构建实时大型机器学习应用程序的框架,其中还包括用于协同过滤,分类,回归和聚类的端到端应用程序。
    • Smile - 统计机器智能和学习引擎提供了一套机器学习算法和可视化库。
    • Weka - 收集从预处理到可视化的数据挖掘任务的算法

    消息(Messaging)

    Tools that help to send messages between clients in order to ensure protocol independency.帮助客户端发送消息的工具,以确保协议的独立性。

    • Aeron - 高效可靠的单播和组播消息传输。
    • Apache ActiveMQ -实现JMS并将异步通信同步转换的消息代理。
    • Apache Camel - 通过企业集成模式将不同的运输API粘合在一起
    • Apache Kafka -高吞吐量分布式消息系统。
    • Hermes -快速可靠的消息代理建立在卡夫卡之上。
    • JeroMQ - ZeroMQ的实现。
    • Nakadi -在Kafka之上提供一个RESTful API。
    • RocketMQ -快速,可靠,可扩展的分布式消息平台。
    • Smack - 跨平台XMPP客户端库。

    其它(Miscellaneous)

    Everything else.其他一切

    • Codename One - 用于编写原生手机的跨平台解决方案(iOS,Android等)
    • CQEngine -Java集合上的超快SQL类查询。
    • Design Patterns - 实现和解释最常见的设计模式。
    • Failsafe -简单的故障处理与重试和断路器。
    • J2ObjC - Java到Objective-C翻译器,用于将Android库移植到iOS。
    • jabba - Java版本管理器灵感来自nvm。
    • javaslang-circuitbreaker - 功能容错库。
    • JBake -静态网站生成器
    • Jimfs - 内存文件系统。
    • Joda-Money - JDK提供的基本货币和金钱类别和算法。
    • JPad - 代码片段
    • Lanterna - 简单的控制台文本GUI库类似于诅咒。
    • LightAdmin - 可插拔的CRUD UI库,用于快速开发应用程序。
    • Membrane Service Proxy - 一个开源的反向代理框架,用Java编写。
    • Modern Java - A Guide to Java 8 - 热门Java 8指南。
    • Modernizer - 检测传统Java API的使用。
    • OpenRefine - 用于处理凌乱数据的工具:清理,转换,使用Web服务扩展它并将其链接到数据库.
    • TypeTools - 解决通用类型的工具。

    微服务(Microservice)

    Tools for managing microservices, i.e. creation, coordination or discovery.用于管理微服务的工具,即创建,协调或发现。

    • Apollo -用于撰写可组合的微服务的图书馆。
    • consul-api - Consul API的客户端是分布式,高可用性和数据中心感知的注册表/发现服务。
    • Eureka -基于REST的服务注册表,用于弹性负载平衡和故障转移。
    • Lagom - 创建基于微服务系统的框架。
    • SnopEE -Java EE微服务的发现服务

    监控(Monitoring)

    Tools that monitor applications in production.监控生产中的应用程序的工具。

    - 性能监视器

    • Glowroot - 开源Java APM。
    • JavaMelody -性能监控和分析。
    • jmxtrans - 连接到多个JVM并通过JMX查询它们的属性的工具。 其查询语言基于JSON,允许非Java程序员访问JVM属性。 同样,此工具支持不同的输出写入,包括Graphite,Ganglia,StatsD等。
    • Jolokia - JMX over REST.
    • Kamon - 用于监视在JVM上运行的应用程序的工具。
    • Metrics -通过JMX或HTTP公开指标,并将其发送到数据库。
    • New Relic

    - 性能监视器

    - 生产中错误监控和调试。

    - 性能监视器,用于为JVM应用程序分发事务跟踪。

    • Stagemonitor - JVM应用程序的开源性能监控和事务跟踪。

    本地化(Native)

    For working with platform-specific native libraries.用于平台特定的本机库。

    • JNA - 在不编写JNI的情况下与本地库一起工作。 还提供了通用系统库的接口
    • JNR - 在不编写JNI的情况下与本地库一起工作。 还提供了通用系统库的接口。 与JNA相同的目标,但更快,并作为即将到来的基础Project Panama.

    自然语言处理(Natural Language Processing)

    Libraries that specialize on processing text.专门处理文本的图书馆。

    • CoreNLP -斯坦福大学的CoreNLP为标签,命名实体识别,情绪分析等诸多功能提供了一套基础工具。
    • DKPro - 用于语言预处理,机器学习,词汇资源等的可重用NLP工具的集合
    • LingPipe - 工具包,用于从POS标签到情绪分析的各种任务。

    网络编程(Networking)

    Libraries for network programming.网络编程库。

    • Async Http Client - LibAsynchronous HTTP和WebSocket客户端库。
    • Comsat - 将标准的Java Web相关API与Quasar光纤和演员集成。
    • Finagle - 用于构建高并发服务器的可扩展RPC系统。 它为多个协议实现统一的客户端和服务器API,并且是协议无关的,这简化了新协议的实现。
    • Grizzly - NIO框架。 在Glassfish中用作网络层。
    • gRPC - 基于protobuf和HTTP / 2的RPC框架。
    • MINA -抽象事件驱动的异步I / O API,用于通过Java NIO进行TCP / IP和UDP / IP的网络操作。
    • Netty - 构建高性能网络应用程序的框架。
    • Nifty - 在Netty上实施Thrift客户端和服务器。
    • OkHttp - HTTP + SPDY客户端。
    • Riptide - Spring的RestTemplate的客户端响应路由。
    • Undertow - Web服务器提供基于NIO的阻塞和非阻塞API。 在WildFly中用作网络层
    • urnlib -用于表示,解析和编码URN的Java库,如RFC 2141 ...

    对象关系映射(ORM)

    APIs which handle the persistence of objects.处理对象持久性的API。

    • Ebean - 提供简单快速的数据访问。
    • EclipseLink - 支持一些持久性标准:JPA,JAXB,JCA和SDO。
    • Hibernate - 强大而广泛地应用于活跃的社区。
    • MyBatis - 夫妻对象与存储过程或SQL语句。

    (PaaS)

    Java platform as a service.Java平台即服务。

    - 基于AWS,支持Tomcat和Jetty。

    - 无服务器计算。

    - PaaS在Google的基础架构上。

    - 抽象计算环境。

    -支持Tomcat,Jetty,GlassFish,JBoss,TomEE和WildFly。

    -在内部解决方案

    (PDF)

    Everything that helps with the creation of PDF files.一切有助于创建PDF文件的东西。

    性能分析(Performance analysis)

    Tools for performance analysis, profiling and benchmarking.性能分析,分析和基准测试工具。

    - 分析和可视化GC日志的工具。 它提供了一个免费的基于云的上传界面。

    • honest-profiler - 低开销,无偏差的采样分析仪。
    • jHiccup - 日志和记录平台JVM档位。
    • JMH - JMH是用于构建,运行和分析以Java和其他针对JVM的语言编写的nano / micro / milli / macro基准测试的Java线程.
    • JProfiler

    - 剖面仪

    - Profiler for Web应用程序。

    - 剖面仪

    平台(Platform)

    Frameworks that are suites of multiple libraries encompassing several categories.包含多个类别的多个库的套件框架。

    • CUBA Platform - 基于Spring,EclipseLink和Vaadin的高级框架,用于开发具有丰富Web界面的企业应用程序.
    • Spring - 提供从依赖注入到面向方面的编程到安全性的许多包。

    反应库(Reactive libraries)

    Libraries for developing reactive applications.用于开发反应性应用的图书馆。

    • Reactive Streams - 提供非阻塞背压的异步流处理标准。
    • Reactor -用于构建反应性快速数据应用程序的库。
    • RxJava - 用于使用来自JVM的可观察序列编写异步和基于事件的程序的库
    • vert.x - Polyglot事件驱动应用程序框架。

    REST框架(REST Frameworks)

    Frameworks specifically for creating RESTful services.专门用于创建RESTful服务的框架。

    • Dropwizard - 使用Jetty,Jackson,Jersey和Metrics设置现代Web应用程序的意见框架。
    • Feign - 由Retrofit,JAXRS-2.0和WebSocket启发的HTTP客户端绑定。
    • Jersey - JAX-RS参考实现。
    • Microserver —Spring&Spring Boot的一个方便的可扩展Microservices插件系统,拥有超过30个插件并且不断增长,支持微型整体和纯粹的微型服务。
    • RAML - 建立语言,以合约方式生成REST API
    • Rapidoid -一个简单,安全和极快的框架,包括嵌入式HTTP服务器,GUI组件和依赖注入。
    • rest.li -使用类型安全绑定和异步非阻塞IO构建强大,可扩展的RESTful架构的框架,该端口到终端开发人员工作流程可促进清洁实践,统一的界面设计和一致的数据建模。
    • RESTEasy - 完全认证和便携式实现JAX-RS规范。
    • RestExpress - JBoss Netty HTTP堆栈上的薄型封装可提供扩展和性能。
    • Restlet Framework - 先进的框架具有强大的路由和过滤功能,统一的客户端和服务器API。
    • Retrofit - 类型安全的REST客户端。
    • Spark -Sinatra启发框架。
    • Swagger - Swagger是用于描述,生成,消费和可视化RESTful Web服务的规范和完整框架实现。

    科学计算(Science)

    Libraries for scientific computing, analysis and visualization.用于科学计算,分析和可视化的图书馆。

    • DataMelt - 科学计算,数据分析和数据可视化的环境。
    • GraphStream -动态图形建模与分析库。
    • JGraphT - 提供数学图论理论对象和算法的图库。
    • JGraphX - 可视化库(主要是Swing)和与边缘图的交互。

    搜索(Search)

    Engines which index documents for search and analysis.引擎搜索和分析索引文档。

    • Apache Lucene - 高性能,功能齐全的跨平台文本搜索引擎库。
    • Apache Solr - 针对大量流量优化的企业搜索引擎。
    • Elasticsearch - 具有RESTful Web界面和无模式JSON文档的分布式,多租户的全文搜索引擎。

    安全(Security)

    Libraries that handle security, authentication, authorization or session management.处理安全性,身份验证,授权或会话管理的库。

    • Apache Shiro - 执行认证,授权,加密和会话管理。
    • Bouncy Castle - 通用加密库。 JCA提供商,从基本助手到PGP / SMIME操作的各种功能。
    • Cryptomator - 多平台透明客户端加密云端的文件。
    • Hdiv - 运行时应用程序对OWASP的自我保护十大安全风险,如我们不安全的直接对象引用,SQL注入,跨站点脚本(XSS),跨站点请求伪造(CSRF)等等。
    • jjwt -Java JWT:用于Java和Android的JSON Web令牌。
    • Keycloak -用于浏览器应用程序和RESTful Web服务的集成SSO和IDM。
    • Keyczar - 易于使用,但安全的加密框架与密钥版本控制。
    • OACC - 提供基于权限的授权服务。
    • pac4j - 安全引擎。
    • PicketLink - 用于安全和身份管理的伞项目。

    序列化(Serialization)

    Libraries that handle serialization with high efficiency.以高效率处理序列化的库。

    • FlatBuffers - 内存高效的序列化库,可以访问序列化数据,而无需解包和解析。
    • FST - JDK兼容的高性能对象图序列化。
    • Kryo - 快速高效的对象图序列化框架。
    • MessagePack - 高效的二进制序列化格式。

    服务器(Server)

    Servers which are specifically used to deploy applications.专门用于部署应用程序的服务器。

    • Apache Tomcat - 强大的Servlet和JSP全方位服务器。
    • Apache TomEE - Tomcat加Java EE。
    • Jetty - 重量轻,服务器小,经常嵌入项目。
    • nanohttpd -微型,易于嵌入的HTTP服务器。
    • WebSphere Liberty - IBM开发的轻量级模块化服务器。
    • WildFly - 以前被称为JBoss,由Red Hat开发,具有广泛的Java EE支持。

    模板引擎(Template Engine)

    Tools which substitute expressions in a template.在模板中替换表达式的工具。

    • Handlebars.java - 无逻辑和语义髭模板。
    • Jtwig - 模块化,可配置和完全测试的模板引擎。
    • Thymeleaf - 旨在成为JSP的替代品,一般用于XML文件。

    测试(Testing)

    Tools that test from model to the view.从模型到视图测试的工具。

    • Apache JMeter - 功能测试和性能测量。
    • Arquillian - Java EE容器的集成和功能测试平台。
    • AssertJ - 流畅的断言,提高可读性。
    • Awaitility - DSL用于同步异步操作。
    • Citrus - 集成测试框架,重点是客户端和服务器端消息。
    • ConcurrentUnit - 用于测试多线程和异步应用程序的工具包。
    • Cucumber - BDD测试框架。
    • Cukes-REST -使用胡瓜的REST服务测试的一些小胡瓜步骤。
    • Gatling - 负载测试工具设计易于使用,可维护性和高性能。
    • GreenMail - 用于集成测试的内存中电子邮件服务器。 支持SMTP,POP3和IMAP,包括SSL
    • Hamcrest - 可以组合的匹配器创建灵活的意图表达。
    • J8Spec - J8Spec是一个库,允许以Java编写的测试遵循由RSpec和Jasmine引入的BDD风格。
    • JBehave - 行为驱动发展框架。
    • JGiven - 开发人员友好的BDD测试框架与JUnit和TestNG兼容。
    • JMockit - 模拟静态,最终方法等。
    • junit-dataprovider -一个TestNG像JUnit的dataprovider转轮..
    • JUnitParams - 创建可读和可维护的参数化测试。
    • Lamdba Behave - 描述性行为规范框架。
    • Mockito - 为了TDD或BDD的目的,在自动化单元测试中创建测试双对象。
    • MockServer - 允许模仿与HTTP / S集成的系统。
    • Moco - 简明扼要的网页服务,为公爵选择奖2013。
    • PIT - 用于评估现有JUnit或TestNG测试套件的故障检测能力的快速变异测试框架。
    • PowerMock - 允许模仿静态方法,构造函数,最终类和方法,私有方法和删除静态初始化器。
    • raml-tester - 测试请求/响应是否匹配给定的RAML定义。
    • REST Assured - Java DSL可轻松测试REST / HTTP服务。
    • Selenide - 简洁的Selenium API可编写稳定可读的UI测试。
    • Selenium - 适用于Web应用程序的便携式软件测试框架。
    • Spock - JUnit兼容框架具有表达性的Groovy派生规范语言。
    • TestContainers - 提供通用数据库,Selenium Web浏览器或可以在Docker容器中运行的其他任何东西的一次性实例。
    • Truth - 谷歌的断言和命题框架。
    • WireMock - 存根和模拟Web服务。

    效用(Utility)

    Libraries which provide general utility functions.提供一般效用函数的库。

    • Apache Commons - 提供不同的通用功能,如配置,验证,集合,文件上传或XML处理。
    • CRaSH -在运行CRaSH的JVM中提供一个shell。 由Spring Boot等人使用。
    • Dex - 能够强大的ETL和数据可视化的Java / JavaFX工具。
    • Gephi - 用于可视化和操纵大型图形网络的跨平台。
    • Guava - 集合,缓存,原语支持,并发库,通用注释,字符串处理,I / O等。
    • JADE - 构建和调试多代理系统的框架和环境。
    • JavaVerbalExpressions - 一个有助于构建困难的正则表达式的库。
    • minio-java - 提供简单的API来访问任何Amazon S3兼容对象存储服务器。
    • Protégé - 提供本体编辑器和构建基于知识的系统的框架。
    • Underscore-java -Underscore.js端口功能。

    网页爬网(Web Crawling)

    Libraries that analyze the content of websites.分析网站内容的图书馆。

    • Apache Nutch - Highly extensible, highly scalable web crawler for production environment.用于生产环境的高度可扩展,高度可扩展的Web爬虫。
    • Crawler4j - 简单轻便的网页抓取工具。
    • JSoup - 清理,解析,操纵和清理HTML。

    Web框架(Web Frameworks)

    Frameworks that handle the communication between the layers of an web application.处理Web应用程序层之间的通信的框架。

    • Apache Tapestry - 面向组件的框架,用于创建动态,强大,高度可扩展的Web应用程序。
    • Apache Wicket - 基于组件的Web应用程序框架类似于Tapestry与状态GUI。
    • Baratine - 用于为独立或嵌入式的多个环境构建分布式和应用程序的工具包。
    • Blade - 轻巧,模块化的框架,旨在优雅和简单。
    • Bootique - 针对可运行应用程序的最小意见框架。
    • Grails - MiniGroovy框架旨在通过有利于配置的惯例来提供高效的环境,无需XML和对mixins的支持。
    • Jooby - 可扩展,快速和模块化的微框架,提供多种编程模型。
    • Ninja - 全栈Web框架。
    • Pippo - 小型,高度模块化的Sinatra样框架。
    • Play - 在浏览器中使用配置,热代码重新加载和错误显示的约定。
    • PrimeFaces - JSF框架具有免费的和商业版本的支持。 提供几个前端组件。
    • Ratpack - 一组库可促进快速,高效,可发展和经过良好测试的HTTP应用程序。
    • Spring Boot - 微框架简化了Spring应用程序的开发。
    • Vaadin - 事件驱动框架构建在GWT之上。 在客户端使用Ajax的服务器端架构。

    Resources

    社区(Communities)

    Active discussions.积极讨论

    前场(Frontends)

    Websites that provide a frontend for this list. Please note, there won't be an official website. We don't associate with a particular website and everybody is allowed to create one.为此列表提供前端的网站。 请注意,不会有官方网站。 我们不与特定网站相关联,并且每个人都被允许创建一个。

    影响力书籍(Influential Books)

    Books that had a high impact and are still worth reading.影响力很大但仍值得阅读的书籍。

    播客(Podcasts)

    Something to listen to while programming.编程时要听的东西

    推特(Twitter)

    Active accounts to follow. Descriptions from Twitter.活动帐户跟随。 Twitter的说明

    • Adam Bien - 自由职业者:JavaONE Rockstar演讲嘉宾,Java Champion顾问作者。
    • Aleksey Shipilëv - 性能极客,基准Tzar,并发Bug猎人。
    • Antonio Goncalves - Java Champion, JUG Leader, Devoxx France, Java EE 6/7, JCP, Author.
    • Arun Gupta - Java Champion,JavaOne Rockstar,JUG Leader,Devoxx4Kids-er,Couchbase开发商倡导副总裁。
    • Brian Goetz -Oracle的Java语言架构师。
    • Bruno Borges - Oracle的产品经理/ Java Jock。
    • Ed Burns - Oracle技术人员咨询成员。
    • Eugen Paraschiv - 春季安全课程作者。
    • James Weaver - Java / JavaFX / IoT开发人员,作者和演讲者。
    • Java EE - 官方Java EE Twitter帐户。
    • Java Magazine - 官方Java杂志帐号。
    • Java - 官方Java Twitter帐户。
    • Javin Paul - 著名的Java博主。
    • Lukas Eder - Java Champion,演讲者,JUG.ch共同领导者,创始人兼CEO Data Geekery(jOOQ)。
    • Mario Fusco - RedHatter,JUG协调员,频频演讲者和作者。
    • Mark Reinhold - Oracle平台集团首席架构师。
    • Markus Eisele -Java EE传播者,红帽。
    • Martijn Verburg -伦敦JUG联合领导,演讲者,作者,Java冠军等等。
    • Martin Thompson - 讨厌的表现流氓黑社会
    • OpenJDK - 官方OpenJDK帐号。
    • Peter Lawrey -Java执行专家Peter Lawrey。
    • Reza Rahman - Java EE / GlassFish / WebLogic传播者,作者,演讲者,开源黑客。
    • Simon Maple -Java Champion,virtualJUG创始人,LJC领导,RebelLabs作者。
    • Stephen Colebourne - Java冠军,演讲者。
    • Trisha Gee - Java冠军和演讲者。

    (Websites)

    Sites to read.

    更多资源

    原文:https://github.com/akullpp/awesome-java

     

    转载于:https://www.cnblogs.com/yasepix/p/9271742.html

    展开全文
  • -来自Facebook的数据交换格式。 Persistent Collection -Java Collections框架的持久和不变的模拟。 Protobuf - Google的数据交换格式 SBE - 简单的二进制编码,是最快的消息格式之一。 Wire -清洁,...
  • - Java 8 Jar & Android APK逆向工程套件。 Byteman - 通过DSL(规则)在运行时操作字节码;主要用于测试/故障排除。 cglib - 字节码生成库。 Javassist - 尝试简化字节码编辑。 缓存 提供缓存功能的库...
  • Java资源大全(组件、工具等)

    千次阅读 2018-06-19 14:19:17
    来自Facebook的数据交换格式。 Persistent Collection  - Java Collections框架的持久和不变的模拟。 Protobuf  -  Google的数据交换格式 SBE  -  简单的二进制编码,是最快的消息格式之一。 Wire  - 清洁,...
  • Facebook构建工具。 官网 字节码操作 编程方式操作字节码的开发库。 ASM :通用底层字节码操作和分析开发库。 官网 Byte Buddy :使用流式API进一步简化字节码生成。 官网 Byteman :在运行时通过...
  • Facebook构建工具。 官网 字节码操作 编程方式操作字节码的开发库。 ASM :通用底层字节码操作和分析开发库。 官网 Byte Buddy :使用流式API进一步简化字节码生成。 官网 Byteman:在运行时通过DSL...
  • Facebook构建工具。 官网 字节码操作 编程方式操作字节码的开发库。 ASM :通用底层字节码操作和分析开发库。 官网 Byte Buddy :使用流式API进一步简化字节码生成。 官网 Byteman:在运行时通过DSL...
  • 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。awesome-java 就是 akullpp 发起维护的 Java 资源列表,内容包括:构建工具、数据库、框架、模板、安全、代码分析、日志、第三方库、书籍、...
  • Facebook构建工具。 官网 字节码操作 编程方式操作字节码的开发库。 ASM :通用底层字节码操作和分析开发库。 官网 Byte Buddy :使用流式API进一步简化字节码生成。 官网 Byteman:在运行时通过DSL...
  • java资源大全(转载)

    2017-10-31 23:30:05
    Facebook构建工具。 官网 字节码操作 编程方式操作字节码的开发库。 ASM :通用底层字节码操作和分析开发库。 官网 Byte Buddy :使用流式API进一步简化字节码生成。 官网 Byteman :在运行时...

空空如也

空空如也

1 2 3
收藏数 46
精华内容 18
关键字:

androidkeycloakfacebook授权登录

友情链接: ADRC_failed.rar