Hello, I’m Guide! This is the 2nd issue of JavaGuide’s Open Source project recommendations. Each issue I will select five high quality Java open source projects to recommend to you.

If we have a Flag, we can’t just talk about it! Last night I briefly sorted out some excellent Java open source projects I recently encountered 👇.

👉 : Postman + Swagger + JMeter .

The 5 items recommended today are:

  • Mindustry: A sandbox tower defense game written in Java, currently available on The Apple Store and Steam.
  • Caffeine: Powerful local caching solution.
  • JADX: A powerful decompiler.
  • Debezium: An open source project for tracking data changes (Change Data Capture, CDC). You can easily synchronize data from one data source to another via Debezium, such as MySQL to ES.
  • Jndi-injection-exploit: An out-of-the-box JNDI Injection tool.

These 5 open source projects have been included in awesome- Java.

  • Github address: github.com/CodingDocs/…
  • Gitee address: gitee.com/SnailClimb/…

All right, no more nonsense! Officially start project recommendation.

Mindustry: Sandbox tower Defense games

Mindustry is a sandbox tower defense game written in Java and currently available on The Apple Store, Google Play, Steam, Windows, Linux, and Android platforms.

Yes!! You read that right, the game was written in the Java language.

Currently, the game has a 4.7 rating on the Apple Store, a 4.6 rating on Google Play, and a 96% positive rating on Steam. Very impressive!

Many users of the game say, “I can’t stop playing!”

Also, the project is built using Gradle, so if you want to run the game locally, your JDK version should be at least JDK16.

The author provides a detailed rundown of the project in the README document, so you can make changes directly to the game locally.

What impressed me most, however, was the perseverance of the project’s author. Although the game has been released for more than four years, the author is still maintaining the game and improving the gameplay.

Feel the project author’s submission record! It’s horrible!

  • Project address: github.com/Anuken/Mind…
  • Liverpoolfc.tv: mindustrygame. Making. IO /

Caffeine: Local cache king

Caffeine is a powerful local caching solution with excellent performance 🐂.

How good is it? Take a look at Caffeine’s performance comparison with other tools that provide local caching.

Caffeine, like Guava, uses the cache via an API.

LoadingCache<Key, Graph> graphs = Caffeine.newBuilder()
    .maximumSize(10 _000)
    .expireAfterWrite(Duration.ofMinutes(5))
    .refreshAfterWrite(Duration.ofMinutes(1))
    .build(key -> createExpensiveGraph(key));
Copy the code

Caffeine, however, is better than Guava’s caching capabilities in many ways. Caffeine is used by well-known open source projects such as Redisson, Cassandra, Hbase, Neo4j and Druid.

Why Caffeine is the king of local Cache?

JADX: Powerful decompiler tool

Jadx is a powerful decompression tool that is easy to use and provides not only command-line programs but also GUI programs. In general, we use GUI programs directly.

Jadx supports Windows, Linux, and macOS and can open files in. Apk,. Dex,.jar,.zip, etc

For example, if we need to decomcompile a JAR package to view its source code, we can simply drag the JAR package into jADX. The effect is as follows:

For example, if we want to see the source code of an APK, we can take the APK and drag it directly into jADX. The effect is as follows:

In addition, the tool has the following features:

  • Own powerful search function, support a variety of matching mode;
  • Support to view class, variable or method usage;
  • Support for adding comments to source code
  • Support for anti-obfuscation
  • .

This tool is fairly simple to use, so set a flag: there will be an introduction to JADX next week.

Project address: github.com/skylot/jadx

Debezium: Tracks data changes

Debezium is an open source project for tracking data changes (Change Data Capture, CDC). Based on the Java language, it utilizes Kafka and Kafka Connect for persistence, reliability, and fault tolerance. The working principle is similar to that of Canal and Maxwell, which obtain changes through database logs.

CDC (Change Data Capture) is a software design pattern for identifying and tracking changed Data so that action can be taken on the changed Data,

Debezium already supports MySQL, PostgreSQL, Oracle, Cassandra, MongoDB, SQL Server and other databases.

You can use Debezium to monitor your database, capturing every committed row-level change. Therefore, you can easily synchronize data from one data source to another via Debezium, such as MySQL to ES.

Here is a common architecture for tracking data changes based on Debezium:

Debezium is more flexible than ETL data synchronization schemes.

The official Debezium documentation also provides a number of other useful usage scenarios that you can explore for yourself.

  • Project address: github.com/debezium/de…
  • github.com/debezium/de…
  • Liverpoolfc.tv: debezium. IO /
  • Official document: Debezium. IO /documentati…

Related articles recommended:

  • Build a robust CDC pipeline using Apache Hudi and Debezium
  • Debezium-flink-hudi: real-time streaming CDC

Jndi-injection-exploit :JNDI Injection tool

Jndi-injection-exploit This project is an out-of-the-box JNDI Injection tool that generates JNDI links and starts back-end related services for validation of Fastjson, Jackson, and other related vulnerabilities.

What is JNDI? In simple terms, JNDI (Java Naming and Directory Interface) is a set of application program interfaces, similar to an index center, which allows clients to locate various resources such as users, networks, machines, objects, and services through jndiName.

// Specify the name to look for
String jndiName= "jndiName";
// Initialize the default environment
Context context = new InitialContext();
// Find the resource corresponding to the name
context.lookup(jndiName);
Copy the code

When the jndiName variable is under control, malicious code execution may be triggered if the resource retrieved is a remote class file, which is also known as JNDI injection.

The JNDI guy has introduced a number of major bugs, such as the Log4j2 bug that flooded the tech world a while back.

Project address: github.com/welk1n/JNDI…

Related articles recommended:

  • In-depth understanding of JNDI injection and Java deserialization vulnerability exploitation
  • What the hell is mischief-making JNDI?
  • Log4j2 vulnerability simple subtotal

Hello, I am Guide, focus on Java original dry products to share, junior open source JavaGuide (” Java learning + interview Guide “a cover most Java programmers need to master the core knowledge. Prepare for Java interviews, preferably JavaGuide!) , currently has 115K + Star.

Original is not easy, welcome to like to share, welcome to pay attention to my account in nuggets, I will continue to share original dry goods! Come on, rush