From a092be3ec84c2822a529aac0d2b2b2074fa551d1 Mon Sep 17 00:00:00 2001 From: shathor Date: Sun, 7 Jun 2020 23:35:51 +0200 Subject: [PATCH 1/3] Cleanup non-Java libraries Mainly removed non-Java libraries (or just with trivial, bad or non-idomatic Java-clients) but also dead links: - Apache Mesos: C++ - jasync-sql: Kotlin - Orbit: Kotlin - OkHttp: Kotlin (rewrite from Java, see: https://github.com/square/okhttp/issues/4723) - Play WS: Scala - Apache Spark: Scala (has a Java client, but is really bad) - Deepdive: Shell, Scala, no Java - H2O: C++, Scala, no Java, commercial only free trial - Synapses: Scala - Lagom: Scala - LeakCanary: Kotlin - Kamon: Scala - Datadog: Go, commercial only free trial - Prometheus: Go, changed link to Java Client project - Sematext: commercial only free trial - Beagle: Clojure - Lingua: Kotlin - AkkaGRPC: Scala - Finagle: Scala - Javalin: Kotlin, just some Java interfaces - Vault: Go, no Java - Grails: Groovy, no Java - Seata: non-secure link, changed link to github - Geotoolkit.org: link contains next to no information, changed link to github - Koloboke: dead link, changed link to github - Jtwig: link only says that it's not maintained, changed link to github Not removed, but could be discussed (or marked): - jlink.online: Go, but is a tool anyway - Apache Thrift: C++ with Java client - Protobuf: C++ with Java client - Wire: Kotlin with Java API - Akka: Scala with Java client - Play: Scala with Java client - flatbuffers: C++ with Java client - Cloudsmith: seems to be only free trial not free tier - Jtwig: Says it's not maintained anymore: http://www.jtwig.org/ --- README.md | 31 +++++-------------------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 9d058ade..3d6b01fa 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,6 @@ _Libraries for everything related to the CLI._ _Frameworks that can dynamically manage applications inside of a cluster._ - [Apache Aurora](https://aurora.apache.org) - Mesos framework for long-running services and cron jobs. -- [Apache Mesos](https://mesos.apache.org) - Abstracts CPU, memory, storage, and other compute resources away from machines. - [Singularity](http://getsingularity.com) - Mesos framework that makes deployment and operations easy. It supports web services, background workers, scheduled jobs, and one-off tasks. ### Code Analysis @@ -256,7 +255,6 @@ _Everything that simplifies interactions with the database._ - [Flyway](https://flywaydb.org) - Simple database migration tool. - [H2](https://h2database.com) - Small SQL database notable for its in-memory functionality. - [HikariCP](https://github.com/brettwooldridge/HikariCP) - High-performance JDBC connection pool. -- [jasync-sql](https://github.com/jasync-sql/jasync-sql) - Async DB driver for MySQL and PostgreSQL. - [JDBI](http://jdbi.org) - Convenient abstraction of JDBC. - [Jedis](https://github.com/xetorthio/jedis) - Small client for interaction with Redis, with methods for commands. - [Jest](https://github.com/searchbox-io/Jest) - Client for the Elasticsearch REST API. @@ -328,7 +326,6 @@ _Libraries and frameworks for writing distributed and fault-tolerant application - [Failsafe](https://github.com/jhalterman/failsafe) - Simple failure handling with retries and circuit breakers. - [Hazelcast](https://github.com/hazelcast/hazelcast) - Highly scalable in-memory datagrid with a free open-source version. - [JGroups](http://www.jgroups.org) - Toolkit for reliable messaging and cluster creation. -- [Orbit](http://www.orbit.cloud) - Virtual actors; adds another level of abstraction to traditional actors. - [Quasar](http://docs.paralleluniverse.co/quasar/) - Lightweight threads and actors for the JVM. - [resilience4j](https://github.com/resilience4j/resilience4j) - Functional fault tolerance library. - [ScaleCube Services](https://github.com/scalecube/scalecube-services) - Embeddable Cluster-Membership library based on SWIM and gossip protocol. @@ -341,7 +338,7 @@ _Distributed transactions provide a mechanism for ensuring consistency of data u - [Atomikos](https://www.atomikos.com) - Provides transactions for REST, SOA and microservices with support for JTA and XA. - [Bitronix](https://github.com/bitronix/btm) - Simple but complete implementation of the JTA 1.1 API. - [Narayana](https://narayana.io) - Provides support for traditional ACID and compensation transactions, also complies with JTA, JTS and other standards. (LGPL-2.1-only) -- [Seata](https://seata.io) - Delivers high performance and easy to use distributed transaction services under a microservices architecture. +- [Seata](https://github.com/seata/seata) - Delivers high performance and easy to use distributed transaction services under a microservices architecture. ### Distribution @@ -416,7 +413,7 @@ _Libraries for working with geospatial data and algorithms._ - [Apache SIS](https://sis.apache.org) - Library for developing geospatial applications. - [Geo](https://github.com/davidmoten/geo) - GeoHash utilities in Java. -- [Geotoolkit.org](http://www.geotoolkit.org) - Library for developing geospatial applications. Built on top of the Apache SIS project. (LGPL-2.1-only) +- [Geotk](https://github.com/Geomatys/geotoolkit) - Library for developing geospatial applications. Built on top of the Apache SIS project. (LGPL-2.1-only) - [GeoTools](https://geotools.org) - Library that provides tools for geospatial data. (LGPL-2.1-only) - [GraphHopper](https://github.com/graphhopper/graphhopper) - Road-routing engine. Used as a Java library or standalone web service. - [H2GIS](http://www.h2gis.org) - Spatial extension of the H2 database. (LGPL-3.0-only) @@ -442,7 +439,7 @@ _Everything about high-performance computation, from collections to specific lib - [fastutil](http://fastutil.di.unimi.it) - Fast and compact type-specific collections. - [HPPC](https://labs.carrotsearch.com/hppc.html) - Primitive collections. - [JCTools](https://github.com/JCTools/JCTools) - Concurrency tools currently missing from the JDK. -- [Koloboke](https://koloboke.com) - Hash sets and hash maps. +- [Koloboke](https://github.com/leventov/Koloboke) - Hash sets and hash maps. ### HTTP Clients @@ -450,8 +447,6 @@ _Libraries that assist with creating HTTP requests and/or binding responses._ - [Async Http Client](https://github.com/AsyncHttpClient/async-http-client) - Asynchronous HTTP and WebSocket client library. - [Feign](https://github.com/OpenFeign/feign) - HTTP client binder inspired by Retrofit, JAXRS-2.0, and WebSocket. -- [OkHttp](https://square.github.io/okhttp/) - HTTP and SPDY client. -- [Play WS](https://github.com/playframework/play-ws) - Typesafe client with reactive streams and caching. - [restQL-java](https://github.com/b2wdigital/restQL-java) - Microservice query language that fetches information from multiple services. - [Retrofit](https://square.github.io/retrofit/) - Typesafe REST client. - [Ribbon](https://github.com/Netflix/ribbon) - Client-side IPC library that is battle-tested in cloud. @@ -567,15 +562,11 @@ _Tools that provide specific statistical algorithms for learning from data._ - [Apache Flink](https://flink.apache.org) - Fast, reliable, large-scale data processing engine. - [Apache Mahout](https://mahout.apache.org) - Scalable algorithms focused on collaborative filtering, clustering and classification. -- [Apache Spark](https://spark.apache.org) - Data analytics cluster-computing framework. - [DatumBox](http://www.datumbox.com) - Provides several algorithms and pre-trained models for natural language processing. -- [DeepDive](http://deepdive.stanford.edu) - Creates structured information from unstructured data and integrates it into an existing database. - [Deeplearning4j](https://deeplearning4j.org) - Distributed and multi-threaded deep learning library. -- [H2O](https://www.h2o.ai) - Analytics engine for statistics over big data. - [JSAT](https://github.com/EdwardRaff/JSAT) - Algorithms for pre-processing, classification, regression, and clustering with support for multi-threaded execution. (GPL-3.0-only) - [Oryx 2](https://github.com/OryxProject/oryx) - Framework for building real-time, large-scale machine learning applications. Includes end-to-end applications for collaborative filtering, classification, regression, and clustering. - [Smile](https://github.com/haifengl/smile) - Statistical Machine Intelligence and Learning Engine provides a set of machine learning algorithms and a visualization library. -- [Synapses](https://mrdimosthenis.github.io/Synapses/#synapses) - Lightweight library for neural networks. - [Weka](https://www.cs.waikato.ac.nz/ml/weka/) - Collection of algorithms for data mining tasks ranging from pre-processing to visualization. (GPL-3.0-only) ### Messaging @@ -606,7 +597,6 @@ _Tools for creating and managing microservices._ - [consul-api](https://github.com/Ecwid/consul-api) - Client for the Consul API: a distributed, highly available and datacenter-aware registry/discovery service. - [Eureka](https://github.com/Netflix/eureka) - REST-based service registry for resilient load balancing and failover. - [Helidon](https://helidon.io) - Two-style approach for writing microservices: Functional-reactive and as an implementation of MicroProfile. -- [Lagom](https://www.lagomframework.com) - Framework for creating microservice-based systems. - [Micronaut](https://micronaut.io) - Modern full-stack framework with focus on modularity, minimal memory footprint and startup time. - [Nacos](https://nacos.io) - Dynamic service discovery, configuration and service management platform for building cloud native applications. - [Quarkus](https://quarkus.io) - Kubernetes stack tailored for the HotSpot and Graal VM. @@ -653,7 +643,6 @@ _Everything else._ _Tools that monitor applications in production._ - [Automon](https://github.com/stevensouza/automon) - Combines the power of AOP with monitoring and/or logging tools. -- [LeakCanary](https://github.com/square/leakcanary) - Memory leak detection. - [Failsafe Actuator](https://github.com/zalando/failsafe-actuator) - Out of the box monitoring of Failsafe Circuit Breaker in Spring-Boot environment. - [Glowroot](https://glowroot.org) - Open-source Java APM. - [inspectIT](https://www.inspectit.rocks) - Captures detailed run-time information via hooks that can be changed on the fly. It supports tracing over multiple systems via the OpenTracing API and can correlate the data with end user monitoring. @@ -662,13 +651,10 @@ _Tools that monitor applications in production._ - [Jaeger client](https://github.com/jaegertracing/jaeger-client-java) - Jaeger client. - [jmxtrans](https://github.com/jmxtrans/jmxtrans) - Connect to multiple JVMs and query them for their attributes via JMX. Its query language is based on JSON, which allows non-Java programmers to access the JVM attributes. Supports different output writes, including Graphite, Ganglia, and StatsD. - [Jolokia](https://jolokia.org) - JMX over REST. -- [Kamon ![c]](https://kamon.io) - Tool for monitoring applications running on the JVM. - [Metrics](https://github.com/dropwizard/metrics) - Expose metrics via JMX or HTTP and send them to a database. -- [Datadog ![c]](https://www.datadoghq.com) - Modern monitoring & analytics. - [nudge4j](https://github.com/lorenzoongithub/nudge4j) - Remote developer console from the browser for Java 8 via bytecode injection. - [Pinpoint](https://github.com/naver/pinpoint) - Open-source APM tool. -- [Prometheus](https://prometheus.io) - Provides a multi-dimensional data model, DSL, autonomous server nodes and much more. -- [SPM ![c]](https://sematext.com/spm/) - Performance monitor with distributing transaction tracing for JVM apps. +- [Prometheus](https://github.com/prometheus/client_java) - Provides a multi-dimensional data model, DSL, autonomous server nodes and much more. - [Stagemonitor](https://github.com/stagemonitor/stagemonitor) - Open-source performance monitoring and transaction tracing for JVM apps. - [Sysmon](https://github.com/palantir/Sysmon) - Lightweight platform monitoring tool for Java VMs. - [zipkin](https://zipkin.io) - Distributed tracing system which gathers timing data needed to troubleshoot latency problems in microservice architectures. @@ -685,21 +671,17 @@ _For working with platform-specific native libraries._ _Libraries that specialize in processing text._ -- [Beagle](https://github.com/tokenmill/beagle) - Stored full-text search query engine. - [CogCompNLP](https://github.com/CogComp/cogcomp-nlp) - Provides common annotators for plain text input. (Research and Academic Use License) - [CoreNLP](https://nlp.stanford.edu/software/corenlp.shtml) - Provides a set of fundamental tools for tasks like tagging, named entity recognition, and sentiment analysis. (GPL-3.0-or-later) - [DKPro](https://dkpro.github.io) - Collection of reusable NLP tools for linguistic pre-processing, machine learning, lexical resources, etc. -- [Lingua](https://github.com/pemistahl/lingua) - Natural language detection library, especially suited for short paragraphs of text. - [LingPipe](http://alias-i.com/lingpipe/) - Toolkit for tasks ranging from POS tagging to sentiment analysis. ### Networking _Libraries for building network servers._ -- [AkkaGRPC](https://github.com/akka/akka-grpc) - Support for building streaming gRPC servers and clients on top of Akka Streams. - [Comsat](https://github.com/puniverse/comsat) - Integrates standard Java web-related APIs with Quasar fibers and actors. - [Dubbo](https://github.com/apache/dubbo) - High-performance RPC framework. -- [Finagle](https://github.com/twitter/finagle) - Extensible RPC system for constructing high-concurrency servers. It implements uniform client and server APIs for several protocols, and is protocol-agnostic to simplify implementation of new protocols. - [Grizzly](https://javaee.github.io/grizzly/) - NIO framework. Used as a network layer in Glassfish. - [gRPC](https://github.com/grpc/grpc-java) - RPC framework based on protobuf and HTTP/2. - [KryoNet](https://github.com/EsotericSoftware/kryonet) - Provides a clean and simple API for efficient TCP and UDP client/server network communication using NIO and Kryo. @@ -855,7 +837,6 @@ _Frameworks specifically for creating RESTful services._ - [Dropwizard](https://github.com/dropwizard/dropwizard) - Opinionated framework for setting up modern web applications with Jetty, Jackson, Jersey and Metrics. - [Elide](https://elide.io) - Opinionated framework for JSON- or GraphQL-APIs based on a JPA data model. -- [javalin](https://javalin.io) - Javalin is just a few thousand lines of code on top of Jetty, which means its performance is almost equivalent to pure Jetty. - [Jersey](https://jersey.github.io) - JAX-RS reference implementation. - [Microserver](https://github.com/aol/micro-server) - Convenient, extensible microservices plugin system for Spring & Spring Boot. With more than 30 plugins and growing, it supports both micro-monolith and pure microservices styles. - [Rapidoid](https://www.rapidoid.org) - Simple, secure and extremely fast framework consisting of an embedded HTTP server, GUI components and dependency injection. @@ -912,7 +893,6 @@ _Libraries that handle security, authentication, authorization or session manage - [SecurityBuilder](https://github.com/tersesystems/securitybuilder) - Fluent Builder API for JCA and JSSE classes and especially X.509 certificates. - [Themis](https://github.com/cossacklabs/themis) - Multi-platform high-level cryptographic library provides easy-to-use encryption for protecting sensitive data: secure messaging with forward secrecy, secure data storage (AES256GCM); suits for building end-to-end encrypted applications. - [Tink](https://github.com/google/tink) - Provides a simple and misuse-proof API for common cryptographic tasks. -- [Vault](https://www.vaultproject.io) - Secures, stores, and tightly controls access to tokens, passwords, certificates, API keys, and other secrets. It handles leasing, key revocation, key rolling, and auditing. Through a unified API, users can access an encrypted Key/Value store and network encryption-as-a-service, or generate AWS IAM/STS credentials, SQL/NoSQL databases, X.509 certificates, SSH credentials, and more. ### Serialization @@ -941,7 +921,7 @@ _Tools that substitute expressions in a template._ - [Freemarker](https://freemarker.apache.org) - Library to generate text output (HTML web pages, e-mails, configuration files, source code, etc.) based on templates and changing data. - [Handlebars.java](https://jknack.github.io/handlebars.java/) - Logicless and semantic Mustache templates. - [Jade4J](https://github.com/neuland/jade4j) - Implementation of Pug (formerly known as Jade). -- [Jtwig](http://jtwig.org) - Modular, configurable and fully tested template engine. +- [Jtwig](https://github.com/jtwig/jtwig) - Modular, configurable and fully tested template engine. - [Pebble](https://pebbletemplates.io) - Inspired by Twig and separates itself with its inheritance feature and its easy-to-read syntax. It ships with built-in autoescaping for security and it includes integrated support for internationalization. - [Rocker](https://github.com/fizzed/rocker) - Optimized, memory efficient and speedy template engine producing statically typed, plain objects. - [Thymeleaf](https://www.thymeleaf.org) - Aims to be a substitute for JSP and works for XML files. @@ -1075,7 +1055,6 @@ _Frameworks that handle the communication between the layers of a web applicatio - [Blade](https://github.com/lets-blade/blade) - Lightweight, modular framework that aims to be elegant and simple. - [Bootique](https://bootique.io) - Minimally opinionated framework for runnable apps. - [Firefly](http://www.fireflysource.com) - Asynchronous framework for rapid development of high-performance web application. -- [Grails](https://grails.org) - Groovy framework that provides a highly productive environment by favoring convention over configuration, no XML and support for mixins. - [Jooby](http://www.jooby.org) - Scalable, fast and modular micro-framework that offers multiple programming models. - [Ninja](http://www.ninjaframework.org) - Full-stack web framework. - [Pippo](http://www.pippo.ro) - Small, highly modularized, Sinatra-like framework. From ea448f6b9fd4e92f1c290aa1553293f1a61e2a07 Mon Sep 17 00:00:00 2001 From: shathor Date: Mon, 8 Jun 2020 15:47:09 +0200 Subject: [PATCH 2/3] Apache HttpComponents, H2O, Sematext and Datadog - Added Apache HttpComponents - Reverted H2O, Sematext and Datadog as they do have a hidden free-tier, changed link to github link --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 3d6b01fa..1174d4c1 100644 --- a/README.md +++ b/README.md @@ -445,6 +445,7 @@ _Everything about high-performance computation, from collections to specific lib _Libraries that assist with creating HTTP requests and/or binding responses._ +- [Apache HttpComponents](https://hc.apache.org/) - A toolset of low level Java components focused on HTTP and associated protocols. - [Async Http Client](https://github.com/AsyncHttpClient/async-http-client) - Asynchronous HTTP and WebSocket client library. - [Feign](https://github.com/OpenFeign/feign) - HTTP client binder inspired by Retrofit, JAXRS-2.0, and WebSocket. - [restQL-java](https://github.com/b2wdigital/restQL-java) - Microservice query language that fetches information from multiple services. @@ -564,6 +565,7 @@ _Tools that provide specific statistical algorithms for learning from data._ - [Apache Mahout](https://mahout.apache.org) - Scalable algorithms focused on collaborative filtering, clustering and classification. - [DatumBox](http://www.datumbox.com) - Provides several algorithms and pre-trained models for natural language processing. - [Deeplearning4j](https://deeplearning4j.org) - Distributed and multi-threaded deep learning library. +- [H2O ![c]](https://www.h2o.ai) - Analytics engine for statistics over big data. - [JSAT](https://github.com/EdwardRaff/JSAT) - Algorithms for pre-processing, classification, regression, and clustering with support for multi-threaded execution. (GPL-3.0-only) - [Oryx 2](https://github.com/OryxProject/oryx) - Framework for building real-time, large-scale machine learning applications. Includes end-to-end applications for collaborative filtering, classification, regression, and clustering. - [Smile](https://github.com/haifengl/smile) - Statistical Machine Intelligence and Learning Engine provides a set of machine learning algorithms and a visualization library. @@ -652,9 +654,11 @@ _Tools that monitor applications in production._ - [jmxtrans](https://github.com/jmxtrans/jmxtrans) - Connect to multiple JVMs and query them for their attributes via JMX. Its query language is based on JSON, which allows non-Java programmers to access the JVM attributes. Supports different output writes, including Graphite, Ganglia, and StatsD. - [Jolokia](https://jolokia.org) - JMX over REST. - [Metrics](https://github.com/dropwizard/metrics) - Expose metrics via JMX or HTTP and send them to a database. +- [Datadog ![c]](https://github.com/DataDog/dd-trace-java) - Modern monitoring & analytics. - [nudge4j](https://github.com/lorenzoongithub/nudge4j) - Remote developer console from the browser for Java 8 via bytecode injection. - [Pinpoint](https://github.com/naver/pinpoint) - Open-source APM tool. - [Prometheus](https://github.com/prometheus/client_java) - Provides a multi-dimensional data model, DSL, autonomous server nodes and much more. +- [SPM ![c]](https://github.com/sematext/sematext-agent-java) - Performance monitor with distributing transaction tracing for JVM apps. - [Stagemonitor](https://github.com/stagemonitor/stagemonitor) - Open-source performance monitoring and transaction tracing for JVM apps. - [Sysmon](https://github.com/palantir/Sysmon) - Lightweight platform monitoring tool for Java VMs. - [zipkin](https://zipkin.io) - Distributed tracing system which gathers timing data needed to troubleshoot latency problems in microservice architectures. From 3013661a362c67cd3b6030db30fcbd472b5449f1 Mon Sep 17 00:00:00 2001 From: Andreas Kull Date: Sun, 19 Jul 2020 13:41:09 +0200 Subject: [PATCH 3/3] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 4b662f61..28eee23f 100644 --- a/README.md +++ b/README.md @@ -416,7 +416,6 @@ _Libraries for working with geospatial data and algorithms._ - [Apache SIS](https://sis.apache.org) - Library for developing geospatial applications. - [Geo](https://github.com/davidmoten/geo) - GeoHash utilities in Java. -- [Geotk](https://github.com/Geomatys/geotoolkit) - Library for developing geospatial applications. Built on top of the Apache SIS project. (LGPL-2.1-only) - [GeoTools](https://geotools.org) - Library that provides tools for geospatial data. (LGPL-2.1-only) - [GraphHopper](https://github.com/graphhopper/graphhopper) - Road-routing engine. Used as a Java library or standalone web service. - [H2GIS](http://www.h2gis.org) - Spatial extension of the H2 database. (LGPL-3.0-only)