Java
made by https://0x3d.site
GitHub - lightbend/config: configuration library for JVM languages using HOCON filesconfiguration library for JVM languages using HOCON files - lightbend/config
Visit Site
GitHub - lightbend/config: configuration library for JVM languages using HOCON files
Configuration library for JVM languages.
Overview
- implemented in plain Java with no dependencies
- supports files in three formats: Java properties, JSON, and a human-friendly JSON superset
- merges multiple files across all formats
- can load from files, URLs, or classpath
- good support for "nesting" (treat any subtree of the config the same as the whole config)
- users can override the config with Java system properties,
java -Dmyapp.foo.bar=10
- supports configuring an app, with its framework and libraries,
all from a single file such as
application.conf
- parses duration and size settings, "512k" or "10 seconds"
- converts types, so if you ask for a boolean and the value is the string "yes", or you ask for a float and the value is an int, it will figure it out.
- JSON superset features:
- comments
- includes
- substitutions (
"foo" : ${bar}
,"foo" : Hello ${who}
) - properties-like notation (
a.b=c
) - less noisy, more lenient syntax
- substitute environment variables (
logdir=${HOME}/logs
)
- API based on immutable
Config
instances, for thread safety and easy reasoning about config transformations - extensive test coverage
This library limits itself to config files. If you want to load config from a database or something, you would need to write some custom code. The library has nice support for merging configurations so if you build one from a custom source it's easy to merge it in.
Table of Contents generated with DocToc
- Essential Information
- Using the Library
- Using HOCON, the JSON Superset
- Miscellaneous Notes
Essential Information
Binary Releases
Typesafe Config is compatible with Java 8 and above.
You can find published releases on Maven Central.
<dependency>
<groupId>com.typesafe</groupId>
<artifactId>config</artifactId>
<version>1.4.3</version>
</dependency>
sbt dependency:
libraryDependencies += "com.typesafe" % "config" % "1.4.3"
Link for direct download if you don't use a dependency manager:
Release Notes
Please see NEWS.md in this directory, https://github.com/lightbend/config/blob/main/NEWS.md
API docs
- Online: https://lightbend.github.io/config/latest/api/
- also published in jar form
- consider reading this README first for an intro
- for questions about the
.conf
file format, read HOCON.md in this directory
Bugs and Patches
NOTE: Please read Readme #Maintained-by before spending time suggesting changes to this library.
Report bugs to the GitHub issue tracker. Send patches as pull requests on GitHub.
Before we can accept pull requests, you will need to agree to the Typesafe Contributor License Agreement online, using your GitHub account - it takes 30 seconds. You can do this at https://www.lightbend.com/contribute/cla
Please see CONTRIBUTING for more including how to make a release.
Build
The build uses sbt and the tests are written in Scala; however, the library itself is plain Java and the published jar has no Scala dependency.
Using the Library
API Example
import com.typesafe.config.ConfigFactory
Config conf = ConfigFactory.load();
int bar1 = conf.getInt("foo.bar");
Config foo = conf.getConfig("foo");
int bar2 = foo.getInt("bar");
Longer Examples
See the examples in the examples/
directory.
You can run these from the sbt console with the commands project config-simple-app-java
and then run
.
In brief, as shown in the examples:
- libraries should use a
Config
instance provided by the app, if any, and useConfigFactory.load()
if no specialConfig
is provided. Libraries should put their defaults in areference.conf
on the classpath. - apps can create a
Config
however they want (ConfigFactory.load()
is easiest and least-surprising), then provide it to their libraries. AConfig
can be created with the parser methods inConfigFactory
or built up from any file format or data source you like with the methods inConfigValueFactory
.
Immutability
Objects are immutable, so methods on Config
which transform the
configuration return a new Config
. Other types such as
ConfigParseOptions
, ConfigResolveOptions
, ConfigObject
,
etc. are also immutable. See the
API docs for
details of course.
Schemas and Validation
There isn't a schema language or anything like that. However, two suggested tools are:
- use the checkValid() method
- access your config through a Settings class with a field for each setting, and instantiate it on startup (immediately throwing an exception if any settings are missing)
In Scala, a Settings class might look like:
class Settings(config: Config) {
// validate vs. reference.conf
config.checkValid(ConfigFactory.defaultReference(), "simple-lib")
// non-lazy fields, we want all exceptions at construct time
val foo = config.getString("simple-lib.foo")
val bar = config.getInt("simple-lib.bar")
}
See the examples/ directory for a full compilable program using this pattern.
Standard behavior
The convenience method ConfigFactory.load()
loads the following
(first-listed are higher priority):
- system properties
application.conf
(all resources on classpath with this name)application.json
(all resources on classpath with this name)application.properties
(all resources on classpath with this name)reference.conf
(all resources on classpath with this name)
The idea is that libraries and frameworks should ship with a
reference.conf
in their jar. Applications should provide an
application.conf
, or if they want to create multiple
configurations in a single JVM, they could use
ConfigFactory.load("myapp")
to load their own myapp.conf
.
Libraries and frameworks should default to ConfigFactory.load()
if the application does not provide a custom Config
object. This
way, libraries will see configuration from application.conf
and
users can configure the whole app, with its libraries, in a single
application.conf
file.
Libraries and frameworks should also allow the application to
provide a custom Config
object to be used instead of the
default, in case the application needs multiple configurations in
one JVM or wants to load extra config files from somewhere. The
library examples in examples/
show how to accept a custom config
while defaulting to ConfigFactory.load()
.
For applications using application.{conf,json,properties}
,
system properties can be used to force a different config source
(e.g. from command line -Dconfig.file=path/to/config-file
):
config.resource
specifies a resource name - not a basename, i.e.application.conf
notapplication
config.file
specifies a filesystem path, again it should include the extension, not be a basenameconfig.url
specifies a URL
Note: you need to pass -Dconfig.file=path/to/config-file
before the jar itself, e.g. java -Dconfig.file=path/to/config-file.conf -jar path/to/jar-file.jar
. Same applies for -Dconfig.resource=config-file.conf
These system properties specify a replacement for
application.{conf,json,properties}
, not an addition. They only
affect apps using the default ConfigFactory.load()
configuration. In the replacement config file, you can use
include "application"
to include the original default config
file; after the include statement you could go on to override
certain settings.
If you set config.resource
, config.file
, or config.url
on-the-fly from inside your program (for example with
System.setProperty()
), be aware that ConfigFactory
has some
internal caches and may not see new values for system
properties. Use ConfigFactory.invalidateCaches()
to force-reload
system properties.
Note about resolving substitutions in reference.conf
and application.conf
The substitution syntax ${foo.bar}
will be resolved
twice. First, all the reference.conf
files are merged and then
the result gets resolved. Second, all the application.conf
are
layered over the unresolved reference.conf
and the result of that
gets resolved again.
The implication of this is that the reference.conf
stack has to
be self-contained; you can't leave an undefined value ${foo.bar}
to be provided by application.conf
. It is however possible to
override a variable that reference.conf
refers to, as long as
reference.conf
also defines that variable itself.
Merging config trees
Any two Config objects can be merged with an associative operation
called withFallback
, like merged = firstConfig.withFallback(secondConfig)
.
The withFallback
operation is used inside the library to merge
duplicate keys in the same file and to merge multiple files.
ConfigFactory.load()
uses it to stack system properties over
application.conf
over reference.conf
.
You can also use withFallback
to merge in some hardcoded values,
or to "lift" a subtree up to the root of the configuration; say
you have something like:
foo=42
dev.foo=57
prod.foo=10
Then you could code something like:
Config devConfig = originalConfig
.getConfig("dev")
.withFallback(originalConfig)
There are lots of ways to use withFallback
.
How to handle defaults
Many other configuration APIs allow you to provide a default to the getter methods, like this:
boolean getBoolean(String path, boolean fallback)
Here, if the path has no setting, the fallback would be
returned. An API could also return null
for unset values, so you
would check for null
:
// returns null on unset, check for null and fall back
Boolean getBoolean(String path)
The methods on the Config
interface do NOT do this, for two
major reasons:
- If you use a config setting in two places, the default fallback value gets cut-and-pasted and typically out of sync. This can result in Very Evil Bugs.
- If the getter returns
null
(orNone
, in Scala) then every time you get a setting you have to write handling code fornull
/None
and that code will almost always just throw an exception. Perhaps more commonly, people forget to check fornull
at all, so missing settings result inNullPointerException
.
For most situations, failure to have a setting is simply a bug to fix
(in either code or the deployment environment). Therefore, if a
setting is unset, by default the getters on the Config
interface
throw an exception.
If you want to allow a setting to be missing from
application.conf
in a particular case, then here are some
options:
- Set it in a
reference.conf
included in your library or application jar, so there's a default value. - Use the
Config.hasPath()
method to check in advance whether the path exists (rather than checking fornull
/None
after as you might in other APIs). - Catch and handle
ConfigException.Missing
. NOTE: using an exception for control flow like this is much slower than usingConfig.hasPath()
; the JVM has to do a lot of work to throw an exception. - In your initialization code, generate a
Config
with your defaults in it (using something likeConfigFactory.parseMap()
) then fold that default config into your loaded config usingwithFallback()
, and use the combined config in your program. "Inlining" your reference config in the code like this is probably less convenient than using areference.conf
file, but there may be reasons to do it. - Use
Config.root()
to get theConfigObject
for theConfig
;ConfigObject
implementsjava.util.Map<String,?>
and theget()
method onMap
returns null for missing keys. See the API docs for more detail onConfig
vs.ConfigObject
. - Set the setting to
null
inreference.conf
, then useConfig.getIsNull
andConfig.hasPathOrNull
to handlenull
in a special way while still throwing an exception if the setting is entirely absent.
The recommended path (for most cases, in most apps) is that you
require all settings to be present in either reference.conf
or
application.conf
and allow ConfigException.Missing
to be
thrown if they are not. That's the design intent of the Config
API design.
Consider the "Settings class" pattern with checkValid()
to
verify that you have all settings when you initialize the
app. See the Schemas and Validation
section of this README for more details on this pattern.
If you do need a setting to be optional: checking hasPath()
in
advance should be the same amount of code (in Java) as checking
for null
afterward, without the risk of NullPointerException
when you forget. In Scala, you could write an enrichment class
like this to use the idiomatic Option
syntax:
implicit class RichConfig(val underlying: Config) extends AnyVal {
def getOptionalBoolean(path: String): Option[Boolean] = if (underlying.hasPath(path)) {
Some(underlying.getBoolean(path))
} else {
None
}
}
Since this library is a Java library it doesn't come with that out of the box, of course.
It is understood that sometimes defaults in code make sense. For
example, if your configuration lets users invent new sections, you
may not have all paths up front and may be unable to set up
defaults in reference.conf
for dynamic paths. The design intent
of Config
isn't to prohibit inline defaults, but simply to
recognize that it seems to be the 10% case (rather than the 90%
case). Even in cases where dynamic defaults are needed, you may
find that using withFallback()
to build a complete
nothing-missing Config
in one central place in your code keeps
things tidy.
Whatever you do, please remember not to cut-and-paste default values into multiple places in your code. You have been warned! :-)
Understanding Config
and ConfigObject
To read and modify configuration, you'll use the
Config
interface. A Config
looks at a JSON-equivalent data structure as
a one-level map from paths to values. So if your JSON looks like
this:
"foo" : {
"bar" : 42
"baz" : 43
}
Using the Config
interface, you could write
conf.getInt("foo.bar")
. The foo.bar
string is called a path
expression
(HOCON.md
has the syntax details for these expressions). Iterating over this
Config
, you would get two entries; "foo.bar" : 42
and
"foo.baz" : 43
. When iterating a Config
you will not find
nested Config
(because everything gets flattened into one
level).
When looking at a JSON tree as a Config
, null
values are
treated as if they were missing. Iterating over a Config
will
skip null
values.
You can also look at a Config
in the way most JSON APIs would,
through the
ConfigObject
interface. This interface represents an object node in the JSON
tree. ConfigObject
instances come in multi-level trees, and the
keys do not have any syntax (they are just strings, not path
expressions). Iterating over the above example as a
ConfigObject
, you would get one entry "foo" : { "bar" : 42, "baz" : 43 }
, where the value at "foo"
is another nested
ConfigObject
.
In ConfigObject
, null
values are visible (distinct from
missing values), just as they are in JSON.
ConfigObject
is a subtype of ConfigValue, where the other
subtypes are the other JSON types (list, string, number, boolean, null).
Config
and ConfigObject
are two ways to look at the same
internal data structure, and you can convert between them for free
using
Config.root()
and
ConfigObject.toConfig().
ConfigBeanFactory
As of version 1.3.0, if you have a Java object that follows
JavaBean conventions (zero-args constructor, getters and setters),
you can automatically initialize it from a Config
.
Use
ConfigBeanFactory.create(config.getConfig("subtree-that-matches-bean"), MyBean.class)
to do this.
Creating a bean from a Config
automatically validates that the
config matches the bean's implied schema. Bean fields can be
primitive types, typed lists such as List<Integer>
,
java.time.Duration
, ConfigMemorySize
, or even a raw Config
,
ConfigObject
, or ConfigValue
(if you'd like to deal with a
particular value manually).
Using HOCON, the JSON Superset
The JSON superset is called "Human-Optimized Config Object
Notation" or HOCON, and files use the suffix .conf
. See
HOCON.md
in this directory for more detail.
After processing a .conf
file, the result is always just a JSON
tree that you could have written (less conveniently) in JSON.
Features of HOCON
- Comments, with
#
or//
- Allow omitting the
{}
around a root object - Allow
=
as a synonym for:
- Allow omitting the
=
or:
before a{
sofoo { a : 42 }
- Allow omitting commas as long as there's a newline
- Allow trailing commas after last element in objects and arrays
- Allow unquoted strings for keys and values
- Unquoted keys can use dot-notation for nested objects,
foo.bar=42
meansfoo { bar : 42 }
- Duplicate keys are allowed; later values override earlier, except for object-valued keys where the two objects are merged recursively
include
feature merges root object in another file into current object, sofoo { include "bar.json" }
merges keys inbar.json
into the objectfoo
- include with no file extension includes any of
.conf
,.json
,.properties
- you can include files, URLs, or classpath resources; use
include url("http://example.com")
orfile()
orclasspath()
syntax to force the type, or use justinclude "whatever"
to have the library do what you probably mean (Note:url()
/file()
/classpath()
syntax is not supported in Play/Akka 2.0, only in later releases.) - substitutions
foo : ${a.b}
sets keyfoo
to the same value as theb
field in thea
object - substitutions concatenate into unquoted strings,
foo : the quick ${colors.fox} jumped
- substitutions fall back to environment variables if they don't
resolve in the config itself, so
${HOME}
would work as you expect. Also, most configs have system properties merged in so you could use${user.home}
. - substitutions normally cause an error if unresolved, but
there is a syntax
${?a.b}
to permit them to be missing. +=
syntax to append elements to arrays,path += "/bin"
- multi-line strings with triple quotes as in Python or Scala
Examples of HOCON
All of these are valid HOCON.
Start with valid JSON:
{
"foo" : {
"bar" : 10,
"baz" : 12
}
}
Drop root braces:
"foo" : {
"bar" : 10,
"baz" : 12
}
Drop quotes:
foo : {
bar : 10,
baz : 12
}
Use =
and omit it before {
:
foo {
bar = 10,
baz = 12
}
Remove commas:
foo {
bar = 10
baz = 12
}
Use dotted notation for unquoted keys:
foo.bar=10
foo.baz=12
Put the dotted-notation fields on a single line:
foo.bar=10, foo.baz=12
The syntax is well-defined (including handling of whitespace and escaping). But it handles many reasonable ways you might want to format the file.
Note that while you can write HOCON that looks a lot like a Java properties file (and many properties files will parse as HOCON), the details of escaping, whitespace handling, comments, and so forth are more like JSON. The spec (see HOCON.md in this directory) has some more detailed notes on this topic.
Uses of Substitutions
The ${foo.bar}
substitution feature lets you avoid cut-and-paste
in some nice ways.
Factor out common values
This is the obvious use,
standard-timeout = 10ms
foo.timeout = ${standard-timeout}
bar.timeout = ${standard-timeout}
Inheritance
If you duplicate a field with an object value, then the objects are merged with last-one-wins. So:
foo = { a : 42, c : 5 }
foo = { b : 43, c : 6 }
means the same as:
foo = { a : 42, b : 43, c : 6 }
You can take advantage of this for "inheritance":
data-center-generic = { cluster-size = 6 }
data-center-east = ${data-center-generic}
data-center-east = { name = "east" }
data-center-west = ${data-center-generic}
data-center-west = { name = "west", cluster-size = 8 }
Using include
statements you could split this across multiple
files, too.
If you put two objects next to each other (close brace of the first on the same line with open brace of the second), they are merged, so a shorter way to write the above "inheritance" example would be:
data-center-generic = { cluster-size = 6 }
data-center-east = ${data-center-generic} { name = "east" }
data-center-west = ${data-center-generic} { name = "west", cluster-size = 8 }
Optional system or env variable overrides
In default uses of the library, exact-match system properties
already override the corresponding config properties. However,
you can add your own overrides, or allow environment variables to
override, using the ${?foo}
substitution syntax.
basedir = "/whatever/whatever"
basedir = ${?FORCED_BASEDIR}
Here, the override field basedir = ${?FORCED_BASEDIR}
simply
vanishes if there's no value for FORCED_BASEDIR
, but if you set
an environment variable FORCED_BASEDIR
for example, it would be
used.
A natural extension of this idea is to support several different environment variable names or system property names, if you aren't sure which one will exist in the target environment.
Object fields and array elements with a ${?foo}
substitution
value just disappear if the substitution is not found:
// this array could have one or two elements
path = [ "a", ${?OPTIONAL_A} ]
By setting the JVM property -Dconfig.override_with_env_vars=true
it is possible to override any configuration value using environment
variables even if an explicit substitution is not specified.
The environment variable value will override any pre-existing value and also any value provided as Java property.
With this option enabled only environment variables starting with
CONFIG_FORCE_
are considered, and the name is mangled as follows:
- the prefix
CONFIG_FORCE_
is stripped - single underscore(
_
) is converted into a dot(.
) - double underscore(
__
) is converted into a dash(-
) - triple underscore(
___
) is converted into a single underscore(_
)
i.e. The environment variable CONFIG_FORCE_a_b__c___d
set the
configuration key a.b-c_d
Set array values outside configuration files
Setting the value of array items from java properties or environment variables require specifying the index in the array for the value. So, while in HOCON you can set multiple values into an array or append to an array:
## HOCON
items = ["a", "b"]
items += "c"
Using java properties you specify the exact position:
-Ditems.0="a" -Ditems.1="b"
as well as with environment variables:
export CONFIG_FORCE_items_0=a
export CONFIG_FORCE_items_1=b
Concatenation
Values on the same line are concatenated (for strings and arrays) or merged (for objects).
This is why unquoted strings work, here the number 42
and the
string foo
are concatenated into a string 42 foo
:
key : 42 foo
When concatenating values into a string, leading and trailing whitespace is stripped but whitespace between values is kept.
Quoted or unquoted strings can also concatenate with substitutions of course:
tasks-url : ${base-url}/tasks
tasks-url : ${base-url}"tasks:colon-must-be-quoted"
Note: the ${}
syntax must be outside the quotes!
A concatenation can refer to earlier values of the same field:
path : "/bin"
path : ${path}":/usr/bin"
Arrays can be concatenated as well:
path : [ "/bin" ]
path : ${path} [ "/usr/bin" ]
There is a shorthand for appending to arrays:
// equivalent to: path = ${?path} [ "/usr/bin" ]
path += "/usr/bin"
To prepend or insert into an array, there is no shorthand.
When objects are "concatenated," they are merged, so object concatenation is just a shorthand for defining the same object twice. The long way (mentioned earlier) is:
data-center-generic = { cluster-size = 6 }
data-center-east = ${data-center-generic}
data-center-east = { name = "east" }
The concatenation-style shortcut is:
data-center-generic = { cluster-size = 6 }
data-center-east = ${data-center-generic} { name = "east" }
When concatenating objects and arrays, newlines are allowed inside each object or array, but not between them.
Non-newline whitespace is never a field or element separator. So
[ 1 2 3 4 ]
is an array with one unquoted string element
"1 2 3 4"
. To get an array of four numbers you need either commas or
newlines separating the numbers.
See the spec for full details on concatenation.
Note: Play/Akka 2.0 have an earlier version that supports string
concatenation, but not object/array concatenation. +=
does not
work in Play/Akka 2.0 either. Post-2.0 versions support these
features.
Miscellaneous Notes
Debugging Your Configuration
If you have trouble with your configuration, some useful tips.
- Set the Java system property
-Dconfig.trace=loads
to get output on stderr describing each file that is loaded. Note: this feature is not included in the older version in Play/Akka 2.0. - Use
myConfig.root().render()
to get aConfig
as a string with comments showing where each value came from. This string can be printed out on console or logged to a file etc. - If you see errors like
com.typesafe.config.ConfigException$Missing: No configuration setting found for key foo
, and you're sure that key is defined in your config file, they might appear e.g. when you're loading configuration from a thread that's not the JVM's main thread. Try passing theClassLoader
in manually - e.g. withConfigFactory.load(getClass().getClassLoader())
or setting the context class loader. If you don't pass one, Lightbend Config uses the calling thread'scontextClassLoader
, and in some cases, it may not have your configuration files in its classpath, so loading the config on that thread can yield unexpected, erroneous results.
Supports Java 8 and Later
Currently the library is maintained against Java 8, but version 1.2.1 and earlier will work with Java 6.
Please use 1.2.1 if you need Java 6 support, though some people have expressed interest in a branch off of 1.3.x supporting Java 7. If you want to work on that branch you might bring it up on chat. We can release a jar for Java 7 if someone(s) steps up to maintain the branch. The main branch does not use Java 8 "gratuitously" but some APIs that use Java 8 types will need to be removed.
Rationale for Supported File Formats
(For the curious.)
The three file formats each have advantages.
- Java
.properties
:- Java standard, built in to JVM
- Supported by many tools such as IDEs
- JSON:
- easy to generate programmatically
- well-defined and standard
- bad for human maintenance, with no way to write comments, and no mechanisms to avoid duplication of similar config sections
- HOCON/
.conf
:- nice for humans to read, type, and maintain, with more lenient syntax
- built-in tools to avoid cut-and-paste
- ways to refer to the system environment, such as system properties and environment variables
The idea would be to use JSON if you're writing a script to spit out config, and use HOCON if you're maintaining config by hand. If you're doing both, then mix the two.
Two alternatives to HOCON syntax could be:
- YAML is also a JSON superset and has a mechanism for adding
custom types, so the include statements in HOCON could become
a custom type tag like
!include
, and substitutions in HOCON could become a custom tag such as!subst
, for example. The result is somewhat clunky to write, but would have the same in-memory representation as the HOCON approach. - Put a syntax inside JSON strings, so you might write something
like
"$include" : "filename"
or allow"foo" : "${bar}"
. This is a way to tunnel new syntax through a JSON parser, but other than the implementation benefit (using a standard JSON parser), it doesn't really work. It's a bad syntax for human maintenance, and it's not valid JSON anymore because properly interpreting it requires treating some valid JSON strings as something other than plain strings. A better approach is to allow mixing true JSON files into the config but also support a nicer format.
Other APIs (Wrappers, Ports and Utilities)
This may not be comprehensive - if you'd like to add mention of your wrapper, just send a pull request for this README. We would love to know what you're doing with this library or with the HOCON format.
Guice integration
- Typesafe Config Guice https://github.com/racc/typesafeconfig-guice
Java (yep!) wrappers for the Java library
Scala wrappers for the Java library
- Ficus https://github.com/iheartradio/ficus
- configz https://github.com/arosien/configz
- configs https://github.com/kxbmap/configs
- config-annotation https://github.com/zhongl/config-annotation
- PureConfig https://github.com/pureconfig/pureconfig
- Simple Scala Config https://github.com/ElderResearch/ssc
- konfig https://github.com/vpon/konfig
- ScalaConfig https://github.com/andr83/scalaconfig
- static-config https://github.com/Krever/static-config
- validated-config https://github.com/carlpulley/validated-config
- Cedi Config https://github.com/ccadllc/cedi-config
- Cfg https://github.com/carueda/cfg
- circe-config https://github.com/circe/circe-config
- args4c https://github.com/aaronp/args4c
Clojure wrappers for the Java library
- beamly-core.config https://github.com/beamly/beamly-core.config
Kotlin wrappers for the Java library
- config4k https://github.com/config4k/config4k
- hoplite https://github.com/sksamuel/hoplite
Scala port
- SHocon https://github.com/akka-js/shocon (Supports Scala.js and Scala Native)
- sconfig https://github.com/ekrich/sconfig (Supports JVM, Scala Native, and Scala.js)
Ruby port
Puppet module
- Manage your HOCON configuration files with Puppet!: https://forge.puppetlabs.com/puppetlabs/hocon
Python port
C++ port
JavaScript port
- https://github.com/yellowblood/hocon-js (missing features, under development)
C# port
Rust port
Go port
Erlang port
Linting tool
- A web based linting tool http://www.hoconlint.com/
Online playground
Maintenance notes
License
The license is Apache 2.0, see LICENSE-2.0.txt.
Maintained by
The "Typesafe Config" library is an important foundation to how Akka and other JVM libraries manage configuration. We at Lightbend consider the functionality of this library as feature complete. We will make sure "Typesafe Config" keeps up with future JVM versions, but will rarely make any other changes.
We are thankful for all the work @havocp has put into creating the library initially and supporting its users over many more years, even after leaving Lightbend.
More Resourcesto explore the angular.
mail [email protected] to add your project or resources here 🔥.
- 1Quasar
http://docs.paralleluniverse.co/quasar/
Quasar is a JVM library that provides true lightweight threads, CSP channels and actors.
- 2A big, fast and persistent queue based on memory mapped file.
https://github.com/bulldog2011/bigqueue
A big, fast and persistent queue based on memory mapped file. - bulldog2011/bigqueue
- 3Gradle Build Tool
https://gradle.org
Accelerate developer productivity. Gradle helps teams build, automate and deliver better software, faster.
- 4Union, intersection, and set cardinality in loglog space
https://github.com/LiveRamp/HyperMinHash-java
Union, intersection, and set cardinality in loglog space - LiveRamp/HyperMinHash-java
- 5JayWire Dependency Injection
https://github.com/vanillasource/jaywire
JayWire Dependency Injection. Contribute to vanillasource/jaywire development by creating an account on GitHub.
- 6cglib - Byte Code Generation Library is high level API to generate and transform Java byte code. It is used by AOP, testing, data access frameworks to generate dynamic proxy objects and intercept field access.
https://github.com/cglib/cglib
cglib - Byte Code Generation Library is high level API to generate and transform Java byte code. It is used by AOP, testing, data access frameworks to generate dynamic proxy objects and intercept f...
- 7Java bytecode engineering toolkit
https://github.com/jboss-javassist/javassist
Java bytecode engineering toolkit. Contribute to jboss-javassist/javassist development by creating an account on GitHub.
- 8*old repository* --> this is now integrated in https://github.com/javaparser/javaparser
https://github.com/javaparser/javasymbolsolver
*old repository* --> this is now integrated in https://github.com/javaparser/javaparser - javaparser/javasymbolsolver
- 9Replicate your Key Value Store across your network, with consistency, persistance and performance.
https://github.com/OpenHFT/Chronicle-Map
Replicate your Key Value Store across your network, with consistency, persistance and performance. - OpenHFT/Chronicle-Map
- 10adt4j - Algebraic Data Types for Java
https://github.com/sviperll/adt4j
adt4j - Algebraic Data Types for Java. Contribute to sviperll/adt4j development by creating an account on GitHub.
- 11Advanced date, time and interval library for Java with sun/moon-astronomy and calendars like Chinese, Coptic, Ethiopian, French Republican, Hebrew, Hijri, Historic Christian, Indian National, Japanese, Julian, Korean, Minguo, Persian, Thai, Vietnamese
https://github.com/MenoData/Time4J
Advanced date, time and interval library for Java with sun/moon-astronomy and calendars like Chinese, Coptic, Ethiopian, French Republican, Hebrew, Hijri, Historic Christian, Indian National, Japan...
- 12Use the MongoDB query language to query your relational database, typically from frontend.
https://github.com/mhewedy/spring-data-jpa-mongodb-expressions
Use the MongoDB query language to query your relational database, typically from frontend. - mhewedy/spring-data-jpa-mongodb-expressions
- 13Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. By default it supports the Google Java Style Guide and Sun Code Conventions, but is highly configurable. It can be invoked with an ANT task and a command line program.
https://github.com/checkstyle/checkstyle
Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. By default it supports the Google Java Style Guide and Sun Code Conventions, but is highly co...
- 14requery - modern SQL based query & persistence for Java / Kotlin / Android
https://github.com/requery/requery
requery - modern SQL based query & persistence for Java / Kotlin / Android - requery/requery
- 15Binary Artifact Management Tool
https://github.com/artipie/artipie
Binary Artifact Management Tool. Contribute to artipie/artipie development by creating an account on GitHub.
- 16JLine is a Java library for handling console input.
https://github.com/jline/jline3
JLine is a Java library for handling console input. - jline/jline3
- 17JPF is an extensible software analysis framework for Java bytecode. jpf-core is the basis for all JPF projects; you always need to install it. It contains the basic VM and model checking infrastructure, and can be used to check for concurrency defects like deadlocks, and unhandled exceptions like NullPointerExceptions and AssertionErrors.
https://github.com/javapathfinder/jpf-core
JPF is an extensible software analysis framework for Java bytecode. jpf-core is the basis for all JPF projects; you always need to install it. It contains the basic VM and model checking infrastruc...
- 18Manifold is a Java compiler plugin, its features include Metaprogramming, Properties, Extension Methods, Operator Overloading, Templates, a Preprocessor, and more.
https://github.com/manifold-systems/manifold
Manifold is a Java compiler plugin, its features include Metaprogramming, Properties, Extension Methods, Operator Overloading, Templates, a Preprocessor, and more. - manifold-systems/manifold
- 19A collection of source code generators for Java.
https://github.com/google/auto
A collection of source code generators for Java. Contribute to google/auto development by creating an account on GitHub.
- 20Record builder generator for Java records
https://github.com/Randgalt/record-builder
Record builder generator for Java records. Contribute to Randgalt/record-builder development by creating an account on GitHub.
- 21Realm is a mobile database: a replacement for SQLite & ORMs
https://github.com/realm/realm-java
Realm is a mobile database: a replacement for SQLite & ORMs - realm/realm-java
- 22Resilience4j is a fault tolerance library designed for Java8 and functional programming
https://github.com/resilience4j/resilience4j
Resilience4j is a fault tolerance library designed for Java8 and functional programming - resilience4j/resilience4j
- 23Governator is a library of extensions and utilities that enhance Google Guice to provide: classpath scanning and automatic binding, lifecycle management, configuration to field mapping, field validation and parallelized object warmup.
https://github.com/Netflix/governator
Governator is a library of extensions and utilities that enhance Google Guice to provide: classpath scanning and automatic binding, lifecycle management, configuration to field mapping, field valid...
- 24An annotation processor for generating type-safe bean mappers
https://github.com/mapstruct/mapstruct
An annotation processor for generating type-safe bean mappers - mapstruct/mapstruct
- 25Protocol Buffers - Google's data interchange format
https://github.com/protocolbuffers/protobuf
Protocol Buffers - Google's data interchange format - protocolbuffers/protobuf
- 26Java library for the Stripe API.
https://github.com/stripe/stripe-java
Java library for the Stripe API. . Contribute to stripe/stripe-java development by creating an account on GitHub.
- 27SneakyThrow is a Java library to ignore checked exceptions
https://github.com/rainerhahnekamp/sneakythrow
SneakyThrow is a Java library to ignore checked exceptions - rainerhahnekamp/sneakythrow
- 28paritytrading/parity
https://github.com/paritytrading/parity
Contribute to paritytrading/parity development by creating an account on GitHub.
- 29Jollyday - A holiday API
https://github.com/svendiedrichsen/jollyday
Jollyday - A holiday API. Contribute to svendiedrichsen/jollyday development by creating an account on GitHub.
- 30Java binding for etcd
https://github.com/justinsb/jetcd
Java binding for etcd. Contribute to justinsb/jetcd development by creating an account on GitHub.
- 31A Java library for technical analysis.
https://github.com/ta4j/ta4j
A Java library for technical analysis. Contribute to ta4j/ta4j development by creating an account on GitHub.
- 32CSV library for Java that is fast, RFC-compliant and dependency-free.
https://github.com/osiegmar/FastCSV
CSV library for Java that is fast, RFC-compliant and dependency-free. - osiegmar/FastCSV
- 33Simpler, better and faster Java bean mapping framework
https://github.com/orika-mapper/orika
Simpler, better and faster Java bean mapping framework - orika-mapper/orika
- 34LINQ-style queries for Java 8
https://github.com/my2iu/Jinq
LINQ-style queries for Java 8. Contribute to my2iu/Jinq development by creating an account on GitHub.
- 35Guice (pronounced 'juice') is a lightweight dependency injection framework for Java 11 and above, brought to you by Google.
https://github.com/google/guice
Guice (pronounced 'juice') is a lightweight dependency injection framework for Java 11 and above, brought to you by Google. - google/guice
- 36Build JPA Criteria queries using a Stream-like API
https://github.com/querystream/querystream
Build JPA Criteria queries using a Stream-like API - querystream/querystream
- 37Elegance, high performance and robustness all in one java bean mapper
https://github.com/jmapper-framework/jmapper-core
Elegance, high performance and robustness all in one java bean mapper - jmapper-framework/jmapper-core
- 38Reflectionless command line parser
https://github.com/jbock-java/jbock
Reflectionless command line parser. Contribute to jbock-java/jbock development by creating an account on GitHub.
- 39Simple, efficient Excel to POJO library for Java
https://github.com/creditdatamw/zerocell
Simple, efficient Excel to POJO library for Java . Contribute to creditdatamw/zerocell development by creating an account on GitHub.
- 40Catch common Java mistakes as compile-time errors
https://github.com/google/error-prone
Catch common Java mistakes as compile-time errors. Contribute to google/error-prone development by creating an account on GitHub.
- 41JHipster is a development platform to quickly generate, develop, & deploy modern web applications & microservice architectures.
https://github.com/jhipster/generator-jhipster
JHipster is a development platform to quickly generate, develop, & deploy modern web applications & microservice architectures. - jhipster/generator-jhipster
- 42A library for creating interactive console applications in Java
https://github.com/beryx/text-io
A library for creating interactive console applications in Java - beryx/text-io
- 43A high performance caching library for Java
https://github.com/ben-manes/caffeine
A high performance caching library for Java. Contribute to ben-manes/caffeine development by creating an account on GitHub.
- 44KickAss Configuration. An annotation-based configuration system for Java and Kotlin
https://github.com/mariomac/kaconf
KickAss Configuration. An annotation-based configuration system for Java and Kotlin - mariomac/kaconf
- 45A lightning fast, transactional, file-based FIFO for Android and Java.
https://github.com/square/tape
A lightning fast, transactional, file-based FIFO for Android and Java. - square/tape
- 46Redisson - Easy Redis Java client and Real-Time Data Platform. Valkey compatible. Sync/Async/RxJava/Reactive API. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, RPC, local cache ...
https://github.com/redisson/redisson
Redisson - Easy Redis Java client and Real-Time Data Platform. Valkey compatible. Sync/Async/RxJava/Reactive API. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List,...
- 47configuration library for JVM languages using HOCON files
https://github.com/lightbend/config
configuration library for JVM languages using HOCON files - lightbend/config
- 48Mixin is a trait/mixin and bytecode weaving framework for Java using ASM
https://github.com/SpongePowered/Mixin
Mixin is a trait/mixin and bytecode weaving framework for Java using ASM - SpongePowered/Mixin
- 49Lightweight dependency injection for Java and Android (JSR-330)
https://github.com/zsoltherpai/feather
Lightweight dependency injection for Java and Android (JSR-330) - zsoltherpai/feather
- 50Build software better, together
https://github.com/xzripper/Void2D
GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects.
- 51Elasticsearch Java Rest Client.
https://github.com/searchbox-io/Jest
Elasticsearch Java Rest Client. Contribute to searchbox-io/Jest development by creating an account on GitHub.
- 52:package: Gradle/Maven plugin to package Java applications as native Windows, MacOS, or Linux executables and create installers for them.
https://github.com/fvarrui/JavaPackager
:package: Gradle/Maven plugin to package Java applications as native Windows, MacOS, or Linux executables and create installers for them. - fvarrui/JavaPackager
- 53QuestDB is an open source time-series database for fast ingest and SQL queries
https://github.com/questdb/questdb
QuestDB is an open source time-series database for fast ingest and SQL queries - questdb/questdb
- 54Autumn Lamonte / jexer · GitLab
https://gitlab.com/AutumnMeowMeow/jexer
Java Text User Interface
- 55Extension module to properly support datatypes of javax.money
https://github.com/zalando/jackson-datatype-money
Extension module to properly support datatypes of javax.money - zalando/jackson-datatype-money
- 56The fast, Open Source and easy-to-use solver
https://www.optaplanner.org
Solve any constraint optimization problem easily, including the Vehicle Routing Problem, Employee Rostering, Maintenance Scheduling and many others.
- 57Parquet
https://parquet.apache.org
The Apache Parquet Website
- 58Debezium
https://debezium.io/
Debezium is an open source distributed platform for change data capture. Start it up, point it at your databases, and your apps can start responding to all of the inserts, updates, and deletes that other apps commit to your databases. Debezium is durable and fast, so your apps can respond quickly and never miss an event, even when things go wrong.
- 59Distributed SQL query engine for big data
https://trino.io
Trino is a high performance, distributed SQL query engine for big data.
- 60The easiest way to write SQL in Java
https://www.jooq.org
jOOQ, a fluent API for typesafe SQL query construction and execution.
- 61The Community for Open Collaboration and Innovation | The Eclipse Foundation
https://www.eclipse.org
The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …
- 62The Standard Widget Toolkit | The Eclipse Foundation
https://www.eclipse.org/swt/
The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 415 open source projects, including runtimes, tools and frameworks.
- 63Massoni - JmlOk2
https://massoni.computacao.ufcg.edu.br/home/jmlok
A tool for detect and categorize nonconformances in Contract-Based Programs What is JmlOk2? JmlOk2 is a tool that detects nonconformances between Java code and JML specification through the feedback-directed random tests generation. Also, JmlOk2 is a tool that suggests likely causes for
- 64LITIENGINE 🎮 Free and Open Source Java 2D Game Engine
https://litiengine.com/
LITIENGINE is the pure 2D Java Game Engine and it's entirely free. 2D Sound ✓ 2D Physics ✓ 2D Render Engine ✓ Start Now and build your video game ►
- 65IntelliJ IDEA – the Leading Java and Kotlin IDE
https://www.jetbrains.com/idea/
IntelliJ IDEA is undoubtedly the top-choice IDE for software developers. It makes Java and Kotlin development a more productive and enjoyable experience.
- 66Java in Visual Studio Code
https://code.visualstudio.com/docs/languages/java
Learn about Visual Studio Code editor features (code completion, debugging, snippets, linting) for Java.
- 67Scene Builder - Gluon
https://gluonhq.com/products/scene-builder/
Drag & Drop,Rapid Application Development. Download Now Integrated Scene Builder works with the JavaFX ecosystem – official controls, community projects, and Gluon offerings including Gluon Mobile, Gluon Desktop, and Gluon CloudLink. Simple Drag & Drop user interface design allows for rapid iteration. Separation of design and logic files allows for team members to quickly and […]
- 68jQAssistant
https://jqassistant.org
jQAssistant has 5 repositories available. Follow their code on GitHub.
- 69A project to cause (controlled) destruction on your jvm application
https://github.com/nicolasmanic/perses
A project to cause (controlled) destruction on your jvm application - GitHub - nick-kanakis/perses: A project to cause (controlled) destruction on your jvm application
- 70Redis Java client
https://github.com/xetorthio/jedis
Redis Java client. Contribute to redis/jedis development by creating an account on GitHub.
- 71Selma Java bean mapping that compiles
https://github.com/xebia-france/selma
Selma Java bean mapping that compiles. Contribute to publicissapient-france/selma development by creating an account on GitHub.
- 72Fault tolerance and resilience patterns for the JVM
https://github.com/jhalterman/failsafe
Fault tolerance and resilience patterns for the JVM - failsafe-lib/failsafe
- 73JTA Transaction Manager
https://github.com/bitronix/btm
JTA Transaction Manager. Contribute to scalar-labs/btm development by creating an account on GitHub.
- 74Get rid of the boilerplate code in properties based configuration.
https://github.com/lviggiano/owner
Get rid of the boilerplate code in properties based configuration. - matteobaccan/owner
- 75dOOv (Domain Object Oriented Validation) a fluent API for type-safe bean validation and mapping
https://github.com/doov-io/doov
dOOv (Domain Object Oriented Validation) a fluent API for type-safe bean validation and mapping - doov-org/doov
- 76Identifies and prioritizes God Classes and Highly Coupled classes in Java codebases you should refactor first.
https://github.com/jimbethancourt/RefactorFirst
Identifies and prioritizes God Classes and Highly Coupled classes in Java codebases you should refactor first. - refactorfirst/RefactorFirst
- 77A streaming JsonPath processor in Java
https://github.com/jsurfer/JsonSurfer
A streaming JsonPath processor in Java. Contribute to wanglingsong/JsonSurfer development by creating an account on GitHub.
- 78:fire: Seata is an easy-to-use, high-performance, open source distributed transaction solution.
https://github.com/seata/seata
:fire: Seata is an easy-to-use, high-performance, open source distributed transaction solution. - apache/incubator-seata
- 79ImageJ
https://imagej.net/ImageJ
The ImageJ wiki is a community-edited knowledge base on topics relating to ImageJ, a public domain program for processing and analyzing scientific images, and its ecosystem of derivatives and variants, including ImageJ2, Fiji, and others.
- 80Internet Calendaring and Scheduling Core Object Specification (iCalendar)
https://tools.ietf.org/html/rfc5545
This document defines the iCalendar data format for representing and exchanging calendaring and scheduling information such as events, to-dos, journal entries, and free/busy information, independent of any particular calendar service or protocol. [STANDARDS-TRACK]
- 81Welcome to the Narayana community!
https://narayana.io
With over 30 years of expertise in the area of transaction processing, Narayana is the premier open source transaction manager. It has been used extensively within industry and to drive standards including the OMG and Web Services.
- 82The AspectJ Project | The Eclipse Foundation
https://www.eclipse.org/aspectj/
The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 415 open source projects, including runtimes, tools and frameworks.
- 83Home
https://www.atomikos.com
Distributed transactions without application server, outside of the container - for Java and REST...
- 84Machine Learning in Java
https://tribuo.org/
Tribuo is a Java ML library for multi-class classification, regression, clustering, anomaly detection and multi-label classification.
- 85Elastic — The Search AI Company
https://www.elastic.co
Power insights and outcomes with The Elastic Search AI Platform. See into your data and find answers that matter with enterprise solutions designed to help you accelerate time to insight. Try Elastic ...
- 86Explore, Visualize, Discover Data | Elastic
https://www.elastic.co/kibana
Download Kibana or the complete Elastic Stack for free and start visualizing, analyzing, and exploring your data with Elastic in minutes....
- 87CodenameOne/vm at master · codenameone/CodenameOne
https://github.com/codenameone/CodenameOne/tree/master/vm
Cross-platform framework for building truly native mobile apps with Java or Kotlin. Write Once Run Anywhere support for iOS, Android, Desktop & Web. - codenameone/CodenameOne
- 88Stream Processing and Complex Event Processing Engine
https://github.com/siddhi-io/siddhi
Stream Processing and Complex Event Processing Engine - siddhi-io/siddhi
- 89Apache Kafka
https://kafka.apache.org
Apache Kafka: A Distributed Streaming Platform.
- 90Quarkus - Supersonic Subatomic Java
https://quarkus.io
Quarkus: Supersonic Subatomic Java
- 91P6Spy is a framework that enables database data to be seamlessly intercepted and logged with no code changes to the application.
https://github.com/p6spy/p6spy
P6Spy is a framework that enables database data to be seamlessly intercepted and logged with no code changes to the application. - p6spy/p6spy
- 92Java Statistical Analysis Tool, a Java library for Machine Learning
https://github.com/EdwardRaff/JSAT
Java Statistical Analysis Tool, a Java library for Machine Learning - GitHub - EdwardRaff/JSAT: Java Statistical Analysis Tool, a Java library for Machine Learning
- 93Collect, Parse, Transform Logs | Elastic
https://www.elastic.co/logstash
Logstash (part of the Elastic Stack) integrates data from any source, in any format with this flexible, open source collection, parsing, and enrichment pipeline. Download for free....
- 94Developer-first error tracking and performance monitoring
https://github.com/getsentry/sentry
Developer-first error tracking and performance monitoring - getsentry/sentry
- 95OACC - Java Application Security Framework
http://oaccframework.org
OACC is a fully featured open-source Java API to both enforce and manage your application's authentication and authorization needs.
- 96RabbitMQ Java client
https://github.com/rabbitmq/rabbitmq-java-client
RabbitMQ Java client. Contribute to rabbitmq/rabbitmq-java-client development by creating an account on GitHub.
- 97Multi-OS Engine
https://multi-os-engine.org
Create iOS Apps in Java Port your existing Android App, or build a native Cross-Platform App from scratch.
- 98hippo4j/README-EN.md at develop · opengoofy/hippo4j
https://github.com/opengoofy/hippo4j/blob/develop/README-EN.md
📌 异步线程池框架,支持线程池动态变更&监控&报警,无需修改代码轻松引入。Asynchronous thread pool framework, support Thread Pool Dynamic Change & monitoring & Alarm, no need to modify the code easily introduced. - ope...
- 99MyBatis SQL mapper framework for Java
https://github.com/mybatis/mybatis-3
MyBatis SQL mapper framework for Java. Contribute to mybatis/mybatis-3 development by creating an account on GitHub.
- 100Detect uses of legacy Java APIs
https://github.com/gaul/modernizer-maven-plugin
Detect uses of legacy Java APIs. Contribute to gaul/modernizer-maven-plugin development by creating an account on GitHub.
- 101svix-webhooks/java at main · svix/svix-webhooks
https://github.com/svix/svix-webhooks/tree/main/java
The enterprise-ready webhooks service 🦀. Contribute to svix/svix-webhooks development by creating an account on GitHub.
- 102Transform ML models into a native code (Java, C, Python, Go, JavaScript, Visual Basic, C#, R, PowerShell, PHP, Dart, Haskell, Ruby, F#, Rust) with zero dependencies
https://github.com/BayesWitnesses/m2cgen
Transform ML models into a native code (Java, C, Python, Go, JavaScript, Visual Basic, C#, R, PowerShell, PHP, Dart, Haskell, Ruby, F#, Rust) with zero dependencies - BayesWitnesses/m2cgen
- 103Microsoft Build of OpenJDK
https://github.com/microsoft/openjdk
Microsoft Build of OpenJDK. Contribute to microsoft/openjdk development by creating an account on GitHub.
- 104Event bus for Android and Java that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality.
https://github.com/greenrobot/EventBus
Event bus for Android and Java that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality. - greenrobot/EventBus
- 105The open-source Java obfuscation tool working with Ant and Gradle by yWorks - the diagramming experts
https://github.com/yWorks/yGuard
The open-source Java obfuscation tool working with Ant and Gradle by yWorks - the diagramming experts - yWorks/yGuard
- 106Log analyser / visualiser for Java HotSpot JIT compiler. Inspect inlining decisions, hot methods, bytecode, and assembly. View results in the JavaFX user interface.
https://github.com/AdoptOpenJDK/jitwatch
Log analyser / visualiser for Java HotSpot JIT compiler. Inspect inlining decisions, hot methods, bytecode, and assembly. View results in the JavaFX user interface. - AdoptOpenJDK/jitwatch
- 107Red Hat build of OpenJDK | Red Hat Developer
https://developers.redhat.com/products/openjdk/overview
The Red Hat build of OpenJDK is an open source implementation of the Java Platform, Standard Edition (Java SE).
- 108An in-memory file system for Java 7+
https://github.com/google/jimfs
An in-memory file system for Java 7+. Contribute to google/jimfs development by creating an account on GitHub.
- 109Java client for Consul HTTP API
https://github.com/Ecwid/consul-api
Java client for Consul HTTP API. Contribute to Ecwid/consul-api development by creating an account on GitHub.
- 110jOOX - The Power of jQuery Applied to W3C DOM Like JDBC, DOM is a powerful, yet very verbose low-level API to manipulate XML. The HTML DOM an be manipulated with the popular jQuery product, in JavaScript. Why don't we have jQuery in Java? jOOX is jQuery's XML parts, applied to Java.
https://github.com/jooq/joox
jOOX - The Power of jQuery Applied to W3C DOM Like JDBC, DOM is a powerful, yet very verbose low-level API to manipulate XML. The HTML DOM an be manipulated with the popular jQuery product, in Java...
- 111FizzBuzz Enterprise Edition is a no-nonsense implementation of FizzBuzz made by serious businessmen for serious business purposes.
https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
FizzBuzz Enterprise Edition is a no-nonsense implementation of FizzBuzz made by serious businessmen for serious business purposes. - EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
- 112An application observability facade for the most popular observability tools. Think SLF4J, but for observability.
https://github.com/micrometer-metrics/micrometer
An application observability facade for the most popular observability tools. Think SLF4J, but for observability. - micrometer-metrics/micrometer
- 113Extract tables from PDF files
https://github.com/tabulapdf/tabula-java
Extract tables from PDF files. Contribute to tabulapdf/tabula-java development by creating an account on GitHub.
- 114OpenPDF is a free Java library for creating and editing PDF files, with a LGPL and MPL open source license. OpenPDF is based on a fork of iText. We welcome contributions from other developers. Please feel free to submit pull-requests and bugreports to this GitHub repository.
https://github.com/LibrePDF/OpenPDF
OpenPDF is a free Java library for creating and editing PDF files, with a LGPL and MPL open source license. OpenPDF is based on a fork of iText. We welcome contributions from other developers. Plea...
- 115JavaMelody : monitoring of JavaEE applications
https://github.com/javamelody/javamelody
JavaMelody : monitoring of JavaEE applications. Contribute to javamelody/javamelody development by creating an account on GitHub.
- 116Java Abstracted Foreign Function Layer
https://github.com/jnr/jnr-ffi
Java Abstracted Foreign Function Layer. Contribute to jnr/jnr-ffi development by creating an account on GitHub.
- 117A lightweight, simple FTP server. Pure Java, no dependencies.
https://github.com/Guichaguri/MinimalFTP
A lightweight, simple FTP server. Pure Java, no dependencies. - Guichaguri/MinimalFTP
- 118TCP/UDP client/server library for Java, based on Kryo
https://github.com/EsotericSoftware/kryonet
TCP/UDP client/server library for Java, based on Kryo - EsotericSoftware/kryonet
- 119XML/XHTML and CSS 2.1 renderer in pure Java
https://github.com/flyingsaucerproject/flyingsaucer
XML/XHTML and CSS 2.1 renderer in pure Java. Contribute to flyingsaucerproject/flyingsaucer development by creating an account on GitHub.
- 120Efficient reliable UDP unicast, UDP multicast, and IPC message transport
https://github.com/real-logic/Aeron
Efficient reliable UDP unicast, UDP multicast, and IPC message transport - real-logic/aeron
- 121Prometheus instrumentation library for JVM applications
https://github.com/prometheus/client_java
Prometheus instrumentation library for JVM applications - prometheus/client_java
- 122JObfuscator — Java Source Code Obfuscation & Protection
https://www.pelock.com/products/jobfuscator
JObfuscator is a source code obfuscator for the Java language. Protect Java source code & algorithms from hacking, cracking, reverse engineering, decompilation & technology theft.
- 123:chart_with_upwards_trend: Capturing JVM- and application-level metrics. So you know what's going on.
https://github.com/dropwizard/metrics
:chart_with_upwards_trend: Capturing JVM- and application-level metrics. So you know what's going on. - dropwizard/metrics
- 124Statistical Machine Intelligence & Learning Engine
https://github.com/haifengl/smile
Statistical Machine Intelligence & Learning Engine - haifengl/smile
- 125PipelinR is a lightweight command processing pipeline ❍ ⇢ ❍ ⇢ ❍ for your Java awesome app.
https://github.com/sizovs/pipelinr
PipelinR is a lightweight command processing pipeline ❍ ⇢ ❍ ⇢ ❍ for your Java awesome app. - GitHub - sizovs/PipelinR: PipelinR is a lightweight command processing pipeline ❍ ⇢ ❍ ⇢ ❍ for your Java...
- 126Home - Micronaut Framework
https://micronaut.io
The Micronaut® framework is a modern, open source, JVM-based, full-stack toolkit for building modular, easily testable microservices and serverless applications.
- 127Java reporting library for creating dynamic report designs at runtime
https://github.com/dynamicreports/dynamicreports
Java reporting library for creating dynamic report designs at runtime - dynamicreports/dynamicreports
- 128Java Structured Logging API for Logback, Log4J2, and JUL
https://github.com/tersesystems/echopraxia
Java Structured Logging API for Logback, Log4J2, and JUL - tersesystems/echopraxia
- 129Support alternative markup for Apache Maven POM files
https://github.com/takari/polyglot-maven
Support alternative markup for Apache Maven POM files - takari/polyglot-maven
- 130Pure Java ZeroMQ
https://github.com/zeromq/jeromq
Pure Java ZeroMQ . Contribute to zeromq/jeromq development by creating an account on GitHub.
- 131OctoLinker — Links together, what belongs together
https://github.com/OctoLinker/OctoLinker
OctoLinker — Links together, what belongs together - OctoLinker/OctoLinker
- 132DataMelt
https://datamelt.org/
Java program for data analysis, statistics and visualization
- 133AWS Service registry for resilient mid-tier load balancing and failover.
https://github.com/Netflix/eureka
AWS Service registry for resilient mid-tier load balancing and failover. - Netflix/eureka
- 134A fast, light and cloud native OAuth 2.0 authorization microservices based on light-4j
https://github.com/networknt/light-oauth2/.
A fast, light and cloud native OAuth 2.0 authorization microservices based on light-4j - networknt/light-oauth2
- 135ISBN core
https://github.com/ladutsko/isbn-core
ISBN core. Contribute to ladutsko/isbn-core development by creating an account on GitHub.
- 136Provides tracing abstractions over tracers and tracing system reporters.
https://github.com/micrometer-metrics/tracing
Provides tracing abstractions over tracers and tracing system reporters. - micrometer-metrics/tracing
- 137Java library for representing, parsing and encoding URNs as in RFC2141 and RFC8141 (Maintained by @claussni)
https://github.com/slub/urnlib
Java library for representing, parsing and encoding URNs as in RFC2141 and RFC8141 (Maintained by @claussni) - slub/urnlib
- 138The Java gRPC implementation. HTTP/2 based RPC
https://github.com/grpc/grpc-java
The Java gRPC implementation. HTTP/2 based RPC. Contribute to grpc/grpc-java development by creating an account on GitHub.
- 139The java implementation of Apache Dubbo. An RPC and microservice framework.
https://github.com/apache/dubbo
The java implementation of Apache Dubbo. An RPC and microservice framework. - apache/dubbo
- 140commons networking utils
https://github.com/CiscoSE/commons-networking
commons networking utils. Contribute to CiscoSE/commons-networking development by creating an account on GitHub.
- 141IP2Location.io Java SDK allows user to query for an enriched data set based on IP address and provides WHOIS lookup api that helps users to obtain domain information.
https://github.com/ip2location/ip2location-io-java
IP2Location.io Java SDK allows user to query for an enriched data set based on IP address and provides WHOIS lookup api that helps users to obtain domain information. - ip2location/ip2location-io-java
- 142OpenAI Api Client in Java
https://github.com/TheoKanning/openai-java
OpenAI Api Client in Java. Contribute to TheoKanning/openai-java development by creating an account on GitHub.
- 143Best-of-breed OpenTracing utilities, instrumentations and extensions
https://github.com/zalando/opentracing-toolbox
Best-of-breed OpenTracing utilities, instrumentations and extensions - zalando/opentracing-toolbox
- 144OpenTelemetry Java SDK
https://github.com/open-telemetry/opentelemetry-java
OpenTelemetry Java SDK. Contribute to open-telemetry/opentelemetry-java development by creating an account on GitHub.
- 145Elide
https://elide.io
Model Driven Json API and GraphQL Web Services for Java
- 146The official AWS SDK for Java - Version 2
https://github.com/aws/aws-sdk-java-v2
The official AWS SDK for Java - Version 2. Contribute to aws/aws-sdk-java-v2 development by creating an account on GitHub.
- 147🛑 This library is DEPRECATED!
https://github.com/jaegertracing/jaeger-client-java
🛑 This library is DEPRECATED! Contribute to jaegertracing/jaeger-client-java development by creating an account on GitHub.
- 148an open source solution to application performance monitoring for java server applications
https://github.com/stagemonitor/stagemonitor
an open source solution to application performance monitoring for java server applications - stagemonitor/stagemonitor
- 149A Sentry SDK for Java, Android and other JVM languages.
https://github.com/getsentry/sentry-java
A Sentry SDK for Java, Android and other JVM languages. - getsentry/sentry-java
- 150A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)
https://github.com/alibaba/Sentinel
A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件) - alibaba/Sentinel
- 151Your relational data. Objectively. - Hibernate ORM
http://hibernate.org/orm/
Idiomatic persistence for Java and relational databases.
- 152A networking framework that evolves with your application
https://github.com/apple/servicetalk
A networking framework that evolves with your application - apple/servicetalk
- 153Ultra-fast SQL-like queries on Java collections
https://github.com/npgall/cqengine
Ultra-fast SQL-like queries on Java collections. Contribute to npgall/cqengine development by creating an account on GitHub.
- 154Home | MobileUI
https://mobileui.dev
MobileUI Framework for cross-platform app development with Kotlin and Java.
- 155Cryptomator - Free Cloud Encryption for Dropbox & Co
https://cryptomator.org
Encrypt Dropbox, Google Drive, and any other cloud. Cryptomator is free and open source.
- 156GraphStream - A Dynamic Graph Library
http://graphstream-project.org
GraphStream, java library, API, Graph Visualisation, Graph Layout
- 157Cloud Application Platform | Heroku
https://www.heroku.com
Heroku is a platform as a service (PaaS) that enables developers to build, run, and operate applications entirely in the cloud.
- 158ActiveJ RPC | Lightning-fast binary protocol for high-load architecture | ActiveJ 6.0
https://rpc.activej.io
ActiveJ RPC is a lightning-fast binary protocol for high-load microservices architecture
- 159Build software better, together
https://github.com/DaveJarvis/KeenType
GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects.
- 160Topaz | Topaz
https://www.topaz.sh
An open-source, self-hosted, fine-grained access control service for Cloud Native applications
- 161GraalVM compiles Java applications into native executables that start instantly, scale fast, and use fewer compute resources 🚀
https://github.com/oracle/graal
GraalVM compiles Java applications into native executables that start instantly, scale fast, and use fewer compute resources 🚀 - oracle/graal
- 162Password strength estimator
https://github.com/GoSimpleLLC/nbvcxz
Password strength estimator. Contribute to GoSimpleLLC/nbvcxz development by creating an account on GitHub.
- 163Red Hat OpenShift enterprise application platform
https://www.openshift.com
Red Hat® OpenShift® is a comprehensive application platform to build, modernize, and deploy applications, including AI-enabled apps, at scale.
- 164jmix.io
https://www.cuba-platform.com/
Jmix is a general-purpose high productivity software development platform for building line-of-business applications powered by a professional development environment IntelliJ IDEA and focused on implementing advanced business logic compared to Low Code and BPM platforms.
- 165Eclipse Deeplearning4j
https://deeplearning4j.org
The Eclipse Deeplearning4j Project. Eclipse Deeplearning4j has 4 repositories available. Follow their code on GitHub.
- 166Cross-Platform App Development with Java/Kotlin
https://www.codenameone.com
Open-source cross-platform mobile app development framework to build native iOS, Android, Desktop & Web apps with a single Java or Kotlin codebase.
- 167Alibaba Dragonwell8 JDK
https://github.com/alibaba/dragonwell8
Alibaba Dragonwell8 JDK. Contribute to dragonwell-project/dragonwell8 development by creating an account on GitHub.
- 168Integrate with the latest language models, image generation, speech, and deep learning frameworks like ChatGPT, DALL·E, and Cohere using few java lines.
https://github.com/Barqawiz/IntelliJava
Integrate with the latest language models, image generation, speech, and deep learning frameworks like ChatGPT, DALL·E, and Cohere using few java lines. - intelligentnode/IntelliJava
- 169Apache Pulsar | Apache Pulsar
https://pulsar.apache.org
Apache Pulsar is an open-source, distributed messaging and streaming platform built for the cloud.
- 170Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
https://github.com/eclipse/openj9
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combine...
- 171Tink is a multi-language, cross-platform, open source library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse.
https://github.com/google/tink
Tink is a multi-language, cross-platform, open source library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse. - tink-crypto/tink
- 172APM, (Application Performance Management) tool for large-scale distributed systems.
https://github.com/naver/pinpoint
APM, (Application Performance Management) tool for large-scale distributed systems. - GitHub - pinpoint-apm/pinpoint: APM, (Application Performance Management) tool for large-scale distributed sys...
- 173Java wrapper for the popular chat & VOIP service: Discord https://discord.com
https://github.com/DV8FromTheWorld/JDA
Java wrapper for the popular chat & VOIP service: Discord https://discord.com - discord-jda/JDA
- 174Home - ISA-Ali
http://alias-i.com/lingpipe/
The School’s goals and methods are strikingly different from many short-term computer courses. Teaching programming is not reduced to listing and mindlessly memorizing language statements, which eventually the student does not know how to apply to the solution of a particular problem.
- 175API gateway for REST, OpenAPI, GraphQL and SOAP written in Java.
https://github.com/membrane/service-proxy
API gateway for REST, OpenAPI, GraphQL and SOAP written in Java. - membrane/api-gateway
- 176AutoMQ is a cloud-first alternative to Kafka by decoupling durability to S3 and EBS. 10x cost-effective. Autoscale in seconds. Single-digit ms latency.
https://github.com/AutoMQ/automq-for-kafka
AutoMQ is a cloud-first alternative to Kafka by decoupling durability to S3 and EBS. 10x cost-effective. Autoscale in seconds. Single-digit ms latency. - AutoMQ/automq
- 177A scientific charting library focused on performance optimised real-time data visualisation at 25 Hz update rates for data sets with a few 10 thousand up to 5 million data points.
https://github.com/GSI-CS-CO/chart-fx
A scientific charting library focused on performance optimised real-time data visualisation at 25 Hz update rates for data sets with a few 10 thousand up to 5 million data points. - fair-acc/chart-fx
- 178A blazingly fast multi-language serialization framework powered by JIT and zero-copy.
https://github.com/alipay/fury
A blazingly fast multi-language serialization framework powered by JIT and zero-copy. - apache/fury
- 179Home
https://www.graylog.org
Graylog is a leading centralized log management solution for capturing, storing, and enabling real-time analysis of terabytes of machine data.
- 180Apache HertzBeat(incubating) is a real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
https://github.com/dromara/hertzbeat
Apache HertzBeat(incubating) is a real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities. - apache/hertzbeat
- 181Cloud Computing Services | Google Cloud
https://cloud.google.com
Meet your business challenges head on with cloud computing services from Google, including data management, hybrid & multi-cloud, and AI & ML.
- 182Test Automation Made Simple
https://github.com/intuit/karate
Test Automation Made Simple. Contribute to karatelabs/karate development by creating an account on GitHub.
- 183MockServer
https://www.mock-server.com
MockServer enables easy mocking of any system you integrate with via HTTP or HTTPS. It also proxies, allowing introspection and modification of proxied traffic, with all proxy protocols (i.e. port forwarding, HTTP, HTTPS, SOCKS4, SOCKS5, etc).
- 184Javalin - A lightweight Java and Kotlin web framework. Create REST APIs in Java or Kotlin easily.
https://javalin.io/
Javalin - A lightweight Java and Kotlin web framework. Create REST APIs in Java or Kotlin easily.
- 185ActiveJ | Alternative Java platform for web, high load, and cloud programming | ActiveJ 6.0
https://activej.io
ActiveJ is an alternative Java platform built from the ground up for web, high load, and cloud programming as a replacement for Spring, Quarkus, Vert.x and other sub-optimal solutions
- 186JGit | The Eclipse Foundation
https://www.eclipse.org/jgit/
The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 415 open source projects, including runtimes, tools and frameworks.
- 187Awesome Java | LibHunt
https://java.libhunt.com
Your go-to Java Toolbox. A curated list of awesome Java frameworks, libraries and software. 1050 projects organized into 134 categories.
- 188PrimeFaces
https://www.primefaces.org
Ultimate UI Framework
- 189Head First Java, 3rd Edition
https://www.oreilly.com/library/view/head-first-java/9781492091646/
What will you learn from this book? Head First Java is a complete learning experience in Java and object-oriented programming. With this book, you'll learn the Java language with a … - Selection from Head First Java, 3rd Edition [Book]
- 190WireMock - flexible, open source API mocking
http://wiremock.org
WireMock is a tool for building mock APIs. API mocking enables you build stable, predictable development environments when the APIs you depend on are unreliable or don’t exist.
- 191Java, SQL and jOOQ.
https://blog.jooq.org
Oracle 23ai still doesn't support the standard SQL FILTER clause on aggregate functions, which can prove to be tricky to emulate on JSON aggregate functions
- 192Roadmap to becoming a Java developer in 2024
https://github.com/s4kibs4mi/java-developer-roadmap
Roadmap to becoming a Java developer in 2024. Contribute to s4kibs4mi/java-developer-roadmap development by creating an account on GitHub.
- 193The SDKMAN! Command Line Interface
https://github.com/sdkman/sdkman-cli
The SDKMAN! Command Line Interface. Contribute to sdkman/sdkman-cli development by creating an account on GitHub.
- 194Java regular expressions made easy.
https://github.com/VerbalExpressions/JavaVerbalExpressions
Java regular expressions made easy. Contribute to VerbalExpressions/JavaVerbalExpressions development by creating an account on GitHub.
- 195Load testing designed for DevOps and CI/CD | Gatling
https://gatling.io
Gatling is a load testing tool for web applications designed for DevOps and Continuous Integration. Try Gatling now!
- 196(cross-platform) Java Version Manager
https://github.com/shyiko/jabba
(cross-platform) Java Version Manager. Contribute to shyiko/jabba development by creating an account on GitHub.
- 197Easy Setup Stub Server
https://github.com/dreamhead/moco
Easy Setup Stub Server. Contribute to dreamhead/moco development by creating an account on GitHub.
- 198Object-Oriented Java primitives, as an alternative to Google Guava and Apache Commons
https://github.com/yegor256/cactoos
Object-Oriented Java primitives, as an alternative to Google Guava and Apache Commons - yegor256/cactoos
- 199foojay – a place for friends of OpenJDK
https://foojay.io/today/category/podcast/
foojay is a place for friends of OpenJDK, a one stop shop for all things Java. Learn More.
- 200Build Modern Web Apps using Java Full-Stack platform
https://vaadin.com
Vaadin is a full-stack platform for building responsive, modern web applications in Java with a library of UI components and powerful development tools.
- 201Newest 'java' Questions
https://stackoverflow.com/questions/tagged/java
Stack Overflow | The World’s Largest Online Community for Developers
- 202The Well-Grounded Java Developer, Second Edition
https://www.manning.com/books/the-well-grounded-java-developer-second-edition
Understanding Java from the JVM up gives you a solid foundation to grow your expertise and take on advanced techniques for performance, concurrency, containerization, and more.</b><br/><br/> In The Well-Grounded Java Developer, Second Edition</i> you will learn: The new Java module system and why you should use it</li> Bytecode for the JVM, including operations and classloading</li> Performance tuning the JVM</li> Working with Java’s built-in concurrency and expanded options</li> Programming in Kotlin and Clojure on the JVM</li> Maximizing the benefits from your build/CI tooling with Maven and Gradle</li> Running the JVM in containers</li> Planning for future JVM releases</li> </ul> The Well-Grounded Java Developer, Second Edition</i> introduces both the modern innovations and timeless fundamentals you need to know to become a Java master. Authors Ben Evans, Martijn Verburg, and Jason Clark distill their decades of experience as Java Champions, veteran developers, and key contributors to the Java ecosystem into this clear and practical guide. You’ll discover how Java works under the hood and learn design secrets from Java’s long history. Each concept is illustrated with hands-on examples, including a fully modularized application/library and creating your own multithreaded application.
- 203A curated list of resources related to the Java annotation processing API (JSR 269)
https://github.com/gunnarmorling/awesome-annotation-processing
A curated list of resources related to the Java annotation processing API (JSR 269) - gunnarmorling/awesome-annotation-processing
- 204MinIO Client SDK for Java
https://github.com/minio/minio-java
MinIO Client SDK for Java. Contribute to minio/minio-java development by creating an account on GitHub.
- 205Snapshot testing for Java, Kotlin, and the JVM
https://github.com/diffplug/selfie
Snapshot testing for Java, Kotlin, and the JVM. Contribute to diffplug/selfie development by creating an account on GitHub.
- 206Google core libraries for Java
https://github.com/google/guava
Google core libraries for Java. Contribute to google/guava development by creating an account on GitHub.
- 207PowerMock is a Java framework that allows you to unit test code normally regarded as untestable.
https://github.com/powermock/powermock
PowerMock is a Java framework that allows you to unit test code normally regarded as untestable. - powermock/powermock
- 208🎯 ConsoleCaptor captures console output for unit and integration testing purposes
https://github.com/Hakky54/console-captor
🎯 ConsoleCaptor captures console output for unit and integration testing purposes - Hakky54/console-captor
- 209A TestNG like dataprovider runner for JUnit with many additional features
https://github.com/TNG/junit-dataprovider
A TestNG like dataprovider runner for JUnit with many additional features - TNG/junit-dataprovider
- 210A curated list of awesome Gradle plugins and resources for a better development workflow automation.
https://github.com/ksoichiro/awesome-gradle
A curated list of awesome Gradle plugins and resources for a better development workflow automation. - ksoichiro/awesome-gradle
- 211A curated list of delightful Selenium resources.
https://github.com/christian-bromann/awesome-selenium
A curated list of delightful Selenium resources. Contribute to christian-bromann/awesome-selenium development by creating an account on GitHub.
- 212Dex : The Data Explorer -- A data visualization tool written in Java/Groovy/JavaFX capable of powerful ETL and publishing web visualizations.
https://github.com/PatMartin/Dex
Dex : The Data Explorer -- A data visualization tool written in Java/Groovy/JavaFX capable of powerful ETL and publishing web visualizations. - PatMartin/Dex
- 213Java lib for monitoring directories or individual files via java.nio.file.WatchService
https://github.com/vorburger/ch.vorburger.fswatch
Java lib for monitoring directories or individual files via java.nio.file.WatchService - vorburger/ch.vorburger.fswatch
- 214A collaborative list of great resources about RESTful API architecture, development, test, and performance
https://github.com/marmelab/awesome-rest
A collaborative list of great resources about RESTful API architecture, development, test, and performance - marmelab/awesome-rest
- 215EasyMock, makes mocking easier since 2001
https://github.com/easymock/easymock
EasyMock, makes mocking easier since 2001. Contribute to easymock/easymock development by creating an account on GitHub.
- 216Test if a request/response matches a given raml definition
https://github.com/nidi3/raml-tester
Test if a request/response matches a given raml definition - nidi3/raml-tester
- 217dregex is a Java library that implements a regular expression engine using deterministic finite automata (DFA). It supports some Perl-style features and yet retains linear matching time, and also offers set operations.
https://github.com/marianobarrios/dregex
dregex is a Java library that implements a regular expression engine using deterministic finite automata (DFA). It supports some Perl-style features and yet retains linear matching time, and also o...
- 218Java scope functions inspired by Kotlin
https://github.com/evpl/jkscope
Java scope functions inspired by Kotlin. Contribute to evpl/jkscope development by creating an account on GitHub.
- 219A scalable web crawler framework for Java.
https://github.com/code4craft/webmagic
A scalable web crawler framework for Java. Contribute to code4craft/webmagic development by creating an account on GitHub.
- 220Manage your Java environment
https://github.com/jenv/jenv
Manage your Java environment . Contribute to jenv/jenv development by creating an account on GitHub.
- 221:rocket: Lightning fast and elegant mvc framework for Java8
https://github.com/lets-blade/blade
:rocket: Lightning fast and elegant mvc framework for Java8 - lets-blade/blade
- 222A curated list of awesome JavaFX libraries, books, frameworks, etc...
https://github.com/mhrimaz/AwesomeJavaFX
A curated list of awesome JavaFX libraries, books, frameworks, etc... - mhrimaz/AwesomeJavaFX
- 223java port of Underscore.js
https://github.com/javadev/underscore-java
java port of Underscore.js. Contribute to javadev/underscore-java development by creating an account on GitHub.
- 224A curated list of Microservice Architecture related principles and technologies.
https://github.com/mfornos/awesome-microservices
A curated list of Microservice Architecture related principles and technologies. - mfornos/awesome-microservices
- 225Baeldung
https://www.baeldung.com
In-depth, to-the-point tutorials on Java, Spring, Spring Boot, Security, and REST.
- 226A curated list of awesome loosely performance related JVM stuff. Inspired by awesome-python.
https://github.com/deephacks/awesome-jvm
A curated list of awesome loosely performance related JVM stuff. Inspired by awesome-python. - deephacks/awesome-jvm
- 227Gephi - The Open Graph Viz Platform
https://github.com/gephi/gephi
Gephi - The Open Graph Viz Platform. Contribute to gephi/gephi development by creating an account on GitHub.
- 228🎯 LogCaptor captures log entries for unit and integration testing purposes
https://github.com/Hakky54/log-captor
🎯 LogCaptor captures log entries for unit and integration testing purposes - Hakky54/log-captor
- 229Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas
https://github.com/alibaba/arthas
Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas
- 230A curated list of awesome resources for Graal, GraalVM, Truffle and related topics
https://github.com/neomatrix369/awesome-graal
A curated list of awesome resources for Graal, GraalVM, Truffle and related topics - neomatrix369/awesome-graal
- 231A library that generates postman collection and integration tests from java code
https://github.com/cleopatra27/chocotea
A library that generates postman collection and integration tests from java code - cleopatra27/chocotea
- 232Programming & DevOps news, tutorials & tools
https://dzone.com
Programming, Web Development, and DevOps news, tutorials and tools for beginners to experts. Hundreds of free publications, over 1M members, totally free.
- 233Free Java & OpenJDK Info for Daily Java Usage | foojay
https://foojay.io
A place for friends of OpenJDK, foojay provides user-focused Java and OpenJDK technical info and dashboards with free data for everyday Java developers.
- 234Semantic versioning for Java apps.
https://github.com/semver4j/semver4j
Semantic versioning for Java apps. Contribute to semver4j/semver4j development by creating an account on GitHub.
- 235Developer Community
https://community.oracle.com/community/java
What is Oracle Forums? A place where you can connect, learn and explore. Whether you are a product manager, marketing manager, or general tech enthusiast, we welcome you. In Oracle Forums, you can cre...
- 236Most popular Mocking framework for unit tests written in Java
https://github.com/mockito/mockito
Most popular Mocking framework for unit tests written in Java - mockito/mockito
- 237assertions for logging with logback
https://github.com/dm-drogeriemarkt/log-capture
assertions for logging with logback. Contribute to dm-drogeriemarkt/log-capture development by creating an account on GitHub.
- 238Lightweight analysis tool for detecting mutability in Java classes
https://github.com/MutabilityDetector/MutabilityDetector
Lightweight analysis tool for detecting mutability in Java classes - MutabilityDetector/MutabilityDetector
- 239A Java architecture test library, to specify and assert architecture rules in plain Java
https://github.com/TNG/ArchUnit
A Java architecture test library, to specify and assert architecture rules in plain Java - TNG/ArchUnit
- 240A compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users.
https://github.com/flowable/flowable-engine
A compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users. - flowable/flowable-engine
- 241Testcontainers is a Java library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
https://github.com/testcontainers/testcontainers-java
Testcontainers is a Java library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker containe...
- 242Embulk: Pluggable Bulk Data Loader.
https://github.com/embulk/embulk
Embulk: Pluggable Bulk Data Loader. Contribute to embulk/embulk development by creating an account on GitHub.
- 243Open Source Web Crawler for Java
https://github.com/yasserg/crawler4j
Open Source Web Crawler for Java. Contribute to yasserg/crawler4j development by creating an account on GitHub.
- 244True Object-Oriented Java Web Framework without NULLs, Static Methods, Annotations, and Mutable Objects
https://github.com/yegor256/takes
True Object-Oriented Java Web Framework without NULLs, Static Methods, Annotations, and Mutable Objects - yegor256/takes
- 245XMLUnit for Java 2.x
https://github.com/xmlunit/xmlunit
XMLUnit for Java 2.x. Contribute to xmlunit/xmlunit development by creating an account on GitHub.
- 246Compare JSON in your Unit Tests
https://github.com/lukas-krecan/JsonUnit
Compare JSON in your Unit Tests. Contribute to lukas-krecan/JsonUnit development by creating an account on GitHub.
- 247Improve Service Reliability with AI
https://blog.overops.com
Use AI to enhance software delivery with automated SLO tracking and change impact analysis for better reliability.
- 248A curated list of delightful SAP Commerce resources.
https://github.com/eminyagiz42/awesome-hybris
A curated list of delightful SAP Commerce resources. - eminyagiz42/awesome-sap-commerce
- 249Java rate limiting library based on token-bucket algorithm.
https://github.com/vladimir-bukhtoyarov/bucket4j
Java rate limiting library based on token-bucket algorithm. - bucket4j/bucket4j
- 250JVM version of Pact. Enables consumer driven contract testing, providing a mock service and DSL for the consumer project, and interaction playback and verification for the service provider project.
https://github.com/DiUS/pact-jvm
JVM version of Pact. Enables consumer driven contract testing, providing a mock service and DSL for the consumer project, and interaction playback and verification for the service provider project....
- 251Checklist for code reviews
https://github.com/code-review-checklists/java-concurrency
Checklist for code reviews. Contribute to code-review-checklists/java-concurrency development by creating an account on GitHub.
- 252continuous integration and continuous delivery
https://github.com/ciandcd/awesome-ciandcd
continuous integration and continuous delivery. Contribute to cicdops/awesome-ciandcd development by creating an account on GitHub.
- 253A list of useful Java frameworks, libraries, software and hello worlds examples
https://github.com/Vedenin/useful-java-links
A list of useful Java frameworks, libraries, software and hello worlds examples - Vedenin/useful-java-links
Related Articlesto learn about angular.
- 1Java Programming 101: Beginner's Guide to Object-Oriented Programming
- 2Java Data Types and Variables: A Complete Guide for Beginners
- 3Java Generics: How to Write Type-Safe Code
- 4Java Streams and Lambda Expressions: Comprehensive Guide
- 5Building Web Applications with Java and Spring Boot
- 6Java Web Frameworks Compared: Spring vs. JSF vs. Struts
- 7Building Scalable and Robust Applications with Java EE: Enterprise Java
- 8Java Message Service (JMS) for Enterprise Applications
- 9Android Development: Building Your First App with Java
- 10Using Java for Android App Performance Optimization
FAQ'sto learn more about Angular JS.
mail [email protected] to add more queries here 🔍.
- 1
what can you do with java programming language
- 2
which app is used for java programming
- 3
what is socket programming in java
- 4
what is dynamic programming in java
- 5
what can java programming language be used for
- 6
when was java discontinued
- 7
how to do java programming in laptop
- 8
is java programming language free
- 9
which laptop is best for java programming
- 10
what is java as a programming language
- 11
what can we do with java programming language
- 12
will java be replaced
- 13
is java programming easy to learn
- 14
how popular is java as a programming language
- 15
what can java programming language do
- 16
how can learn java programming
- 17
is java the best programming language
- 18
who made java programming language
- 19
why are generics used in java programming
- 20
which java programming software is the best
- 21
will java ever die
- 22
is java programming hard to learn
- 23
is java programming language
- 24
how long will it take to learn java programming
- 25
how to practice java programming
- 26
how to do java programming in vs code
- 27
is java programming paradigm
- 28
when to use reactive programming java
- 29
how to use netbeans for java programming
- 30
should you learn java or python first
- 31
is java programming language hard to learn
- 32
why reactive programming in java
- 33
was java written in c
- 34
who uses java programming language
- 35
where to start java programming
- 36
where to do java programming
- 37
where to learn java programming
- 38
where to study java programming
- 39
what are the uses of java programming language
- 40
when was java programming language created
- 41
why java programming is simple
- 42
can i do competitive programming in java
- 43
who was java developed by
- 44
which application is used for java programming
- 45
what does java programming do
- 46
does java support procedural programming
- 47
why java programming is used
- 48
what are the features of java programming language
- 49
how to learn java programming for beginners
- 50
why java programming named java
- 51
what is reactive programming java
- 52
how to do java programming in computer
- 53
where to practice java programming
- 54
why functional programming introduced in java 8
- 55
what java programming language
- 56
how to start programming in java
- 57
does java have programming
- 58
where java programming language is used
- 59
can i do java programming on android
- 60
which app is best for java programming
- 61
how to do java programming in notepad
- 62
how can i practice java programming
- 63
what is object oriented programming in java
- 64
how to do java programming in mobile
- 65
which inheritance in java programming is not supported
- 66
what does java programming language look like
- 67
why was java discontinued
- 68
what can you do with java programming
- 69
where we use java programming language
- 70
what are the principles of object oriented programming in java
- 71
what does java programming look like
- 72
how to do java programming
- 73
which of the following is not a java programming tool
- 74
what is the primary focus of java programming
- 75
is java programming hard
- 76
who is the father of java programming language
- 77
which software is used for java programming
- 78
how to learn java programming
- 79
does java support functional programming
- 80
when did java become popular
- 81
where java programming is used
- 82
why was java programming language created
- 83
should you learn java or javascript first
- 84
where we can do java programming
- 85
should java be updated
- 86
is java programming difficult
- 87
can i do java programming on ipad
- 88
which software is needed for java programming
- 89
did javascript come from java
- 90
was java discontinued
- 91
why java is object oriented programming
- 92
who owns java programming language
- 93
why java is popular programming language
- 94
who invented java programming
- 95
does java have programming language
- 96
what are java programming language
- 97
how to download java programming language
- 98
what are the basics of java programming
- 99
how long does it take to learn java programming
- 100
can you do functional programming in java
- 101
who created java programming
- 102
what are the advantages of java programming language
- 103
what is the basic structure of java programming
- 104
what are the features of object-oriented programming in java
- 105
when java was created
- 106
which is a reserved word in the java programming language
- 107
will java become obsolete
- 108
will programming jobs disappear
- 109
is java programming easy
- 110
why java is the best programming language
- 111
does java support asynchronous programming
- 112
what is generic programming in java
- 113
should you learn java or c++ first
- 114
how does java programming work
- 115
what is functional programming in java
- 116
did java or javascript come first
- 117
what job can you get with java programming
- 118
is java programming still relevant
- 119
why java is called an object oriented programming language
- 120
what can java programming be used for
- 121
do java programming online
- 122
which programming paradigm does java follow
- 123
why java programming language is named as java
- 124
how to use eclipse for java programming
More Sitesto check out once you're finished browsing here.
https://www.0x3d.site/
0x3d is designed for aggregating information.
https://nodejs.0x3d.site/
NodeJS Online Directory
https://cross-platform.0x3d.site/
Cross Platform Online Directory
https://open-source.0x3d.site/
Open Source Online Directory
https://analytics.0x3d.site/
Analytics Online Directory
https://javascript.0x3d.site/
JavaScript Online Directory
https://golang.0x3d.site/
GoLang Online Directory
https://python.0x3d.site/
Python Online Directory
https://swift.0x3d.site/
Swift Online Directory
https://rust.0x3d.site/
Rust Online Directory
https://scala.0x3d.site/
Scala Online Directory
https://ruby.0x3d.site/
Ruby Online Directory
https://clojure.0x3d.site/
Clojure Online Directory
https://elixir.0x3d.site/
Elixir Online Directory
https://elm.0x3d.site/
Elm Online Directory
https://lua.0x3d.site/
Lua Online Directory
https://c-programming.0x3d.site/
C Programming Online Directory
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
https://r-programming.0x3d.site/
R Programming Online Directory
https://perl.0x3d.site/
Perl Online Directory
https://java.0x3d.site/
Java Online Directory
https://kotlin.0x3d.site/
Kotlin Online Directory
https://php.0x3d.site/
PHP Online Directory
https://react.0x3d.site/
React JS Online Directory
https://angular.0x3d.site/
Angular JS Online Directory