• Stars
    star
    210
  • Rank 181,004 (Top 4 %)
  • Language
    Java
  • License
    Other
  • Created almost 8 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Eclipse JNoSQL is a framework which has the goal to help Java developers to create Jakarta EE applications with NoSQL.

Eclipse JNoSQL

Introduction

Eclipse JNoSQL is a compatible implementation of the Jakarta NoSQL and Jakarta Data specifications, a Java framework that streamlines the integration of Java applications with NoSQL databases.

Goals

  • Increase productivity performing common NoSQL operations

  • Rich Object Mapping integrated with Contexts and Dependency Injection (CDI)

  • Java-based Query and Fluent-API

  • Persistence lifecycle events

  • Low-level mapping using Standard NoSQL APIs

  • Specific template API to each NoSQL category

  • Annotation-oriented using JPA-like naming when it makes sense

  • Extensible to explore the particular behavior of a NoSQL database

  • Explore the popularity of Apache TinkerPop in Graph API

  • Jakarta NoSQL and Data implementations

One Mapping API to Multiples NoSQL Databases

Eclipse JNoSQL provides one API for each NoSQL database type. However, it incorporates the same annotations from the Jakarta Persistence specification and heritage Java Persistence API (JPA) to map Java objects. Therefore, with just these annotations that look like JPA, there is support for more than twenty NoSQL databases.

@Entity
public class Car {

    @Id
    private Long id;
    @Column
    private String name;
    @Column
    private CarType type;
 //...
}

Theses annotations from the Mapping API will look familiar to the Jakarta Persistence/JPA developer:

Annotation Description

@jakarta.nosql.Entity

Specifies that the class is an entity. This annotation is applied to the entity class.

@jakarta.nosql.Id

Specifies the primary key of an entity.

@jakarta.nosql.Column

Specify the mapped column for a persistent property or field.

@jakarta.nosql.Embeddable

Specifies a class whose instances are stored as an intrinsic part of an owning entity and share the entity’s identity.

@jakarta.nosql.Convert

Specifies the conversion of a Basic field or property.

@org.eclipse.jnosql.mapping.MappedSuperclass

Designates a class whose mapping information is applied to the entities that inherit from it. A mapped superclass has no separate table defined for it.

@jakarta.nosql.Inheritance

Specifies the inheritance strategy to be used for an entity class hierarchy.

@jakarta.nosql.DiscriminatorColumn

Specifies the discriminator column for the mapping strategy.

@jakarta.nosql.DiscriminatorValue

Specifies the value of the discriminator column for entities of the given type.

Important
Although similar to JPA, Jakarta NoSQL defines persistable fields with either the @Id or @Column annotation.

After mapping an entity, you can explore the advantage of using a Template interface, which can increase productivity on NoSQL operations.

@Inject
Template template;
...

Car ferrari = Car.id(1L)
        .name("Ferrari")
        .type(CarType.SPORT);

template.insert(ferrari);
Optional<Car> car = template.find(Car.class, 1L);
template.delete(Car.class, 1L);

List<Car> cars = template.select(Car.class).where("name").eq("Ferrari").result();
template.delete(Car.class).execute();

This template has specialization to take advantage of a particular NoSQL database type.

A Repository interface is also provided for exploring the Domain-Driven Design (DDD) pattern for a higher abstraction.

public interface CarRepository extends PageableRepository<Car, String> {

    Optional<Car> findByName(String name);

}

@Inject
CarRepository repository;
...

Car ferrari = Car.id(1L)
        .name("Ferrari")
        .type(CarType.SPORT);

repository.save(ferrari);
Optional<Car> idResult = repository.findById(1L);
Optional<Car> nameResult = repository.findByName("Ferrari");

Getting Started

Eclipse JNoSQL requires these minimum requirements:

NoSQL Database Types

Eclipse JNoSQL provides common annotations and interfaces. Thus, the same annotations and interfaces, Template and Repository, will work on the four NoSQL database types.

As a reference implementation for Jakarta NoSQL, Eclipse JNosql provides particular behavior to the database type required by the specification, including the Graph database type, it means, Eclipse JNoSQL covers the four NoSQL database types:

  • Key-Value

  • Column Family

  • Document

  • Graph

Key-Value

Jakarta NoSQL provides a Key-Value template to explore the specific behavior of this NoSQL type.

Eclipse JNoSQL offers a mapping implementation for Key-Value NoSQL types:

<dependency>
    <groupId>org.eclipse.jnosql.mapping</groupId>
    <artifactId>jnosql-mapping-key-value</artifactId>
    <version>1.1.0</version>
</dependency>

Furthermore, check for a Key-Value databases. You can find some implementations in the JNoSQL Databases.

@Inject
KeyValueTemplate template;
...

Car ferrari = Car.id(1L).name("ferrari").city("Rome").type(CarType.SPORT);

template.put(ferrari);
Optional<Car> car = template.get(1L, Car.class);
template.delete(1L);

Key-Value is database agnostic. Thus, you can change the database in your application with no or minimal impact on source code.

You can define the database settings using the MicroProfile Config specification, so you can add properties and overwrite it in the environment following the Twelve-Factor App.

jnosql.keyvalue.database=<DATABASE>
jnosql.keyvalue.provider=<CLASS-DRIVER>
jnosql.provider.host=<HOST>
jnosql.provider.user=<USER>
jnosql.provider.password=<PASSWORD>
Tip
The jnosql.keyvalue.provider property is necessary when you have more than one driver in the classpath. Otherwise, it will take the first one.

These configuration settings are the default behavior. Nevertheless, there is an option to programmatically configure these settings. Create a class that implements the Supplier<BucketManager> interface and then define it using the @Alternative and @Priority annotations.

@Alternative
@Priority(Interceptor.Priority.APPLICATION)
@ApplicationScoped
public class ManagerSupplier implements Supplier<BucketManager> {

    @Produces
    public BucketManager get() {
        Settings settings = Settings.builder()
                .put("credential", "value")
                .build();
        KeyValueConfiguration configuration = new NoSQLKeyValueProvider();
        BucketManagerFactory factory = configuration.apply(settings);
        return factory.apply("database");
    }
}

You can work with several Key-Value database instances through the CDI qualifier. To identify each database instance, make a BucketManager visible for CDI by adding the @Produces and the @Database annotations in the method.

@Inject
@Database(value = DatabaseType.KEY_VALUE, provider = "databaseA")
private KeyValueTemplate templateA;

@Inject
@Database(value = DatabaseType.KEY_VALUE, provider = "databaseB")
private KeyValueTemplate templateB;

// producers methods
@Produces
@Database(value = DatabaseType.KEY_VALUE, provider = "databaseA")
public BucketManager getManagerA() {
    BucketManager manager = // instance;
    return manager;
}

@Produces
@Database(value = DatabaseType.KEY_VALUE, provider = "databaseB")
public BucketManager getManagerB() {
    BucketManager manager = // instance;
    return manager;
}

The KeyValue Database module provides a simple way to integrate the KeyValueDatabase annotation with CDI, allowing you to inject collections managed by the key-value database. This annotation works seamlessly with various collections, such as List, Set, Queue, and Map.

To inject collections managed by the key-value database, use the @KeyValueDatabase annotation in combination with CDI’s @Inject annotation. Here’s how you can use it:

import javax.inject.Inject;

// Inject a List<String> instance from the "names" bucket in the key-value database.
@Inject
@KeyValueDatabase("names")
private List<String> names;

// Inject a Set<String> instance from the "fruits" bucket in the key-value database.
@Inject
@KeyValueDatabase("fruits")
private Set<String> fruits;

// Inject a Queue<String> instance from the "orders" bucket in the key-value database.
@Inject
@KeyValueDatabase("orders")
private Queue<String> orders;

// Inject a Map<String, String> instance from the "orders" bucket in the key-value database.
@Inject
@KeyValueDatabase("orders")
private Map<String, String> map;

Column Family

Jakarta NoSQL provides a Column Family template to explore the specific behavior of this NoSQL type.

Eclipse JNoSQL offers a mapping implementation for Column NoSQL types:

<dependency>
    <groupId>org.eclipse.jnosql.mapping</groupId>
    <artifactId>jnosql-mapping-column</artifactId>
    <version>1.1.0</version>
</dependency>

Furthermore, check for a Column Family databases. You can find some implementations in the JNoSQL Databases.

@Inject
ColumnTemplate template;
...

Car ferrari = Car.id(1L)
        .name("ferrari").city("Rome")
        .type(CarType.SPORT);

template.insert(ferrari);
Optional<Car> car = template.find(Car.class, 1L);

template.delete(Car.class).where("id").eq(1L).execute();

Optional<Car> result = template.singleResult("select * from Car where _id = 1");

Column Family is database agnostic. Thus, you can change the database in your application with no or minimal impact on source code.

You can define the database settings using the MicroProfile Config specification, so you can add properties and overwrite it in the environment following the Twelve-Factor App.

jnosql.column.database=<DATABASE>
jnosql.column.provider=<CLASS-DRIVER>
jnosql.provider.host=<HOST>
jnosql.provider.user=<USER>
jnosql.provider.password=<PASSWORD>
Tip
The jnosql.column.provider property is necessary when you have more than one driver in the classpath. Otherwise, it will take the first one.

These configuration settings are the default behavior. Nevertheless, there is an option to programmatically configure these settings. Create a class that implements the Supplier<ColumnManager> interface, then define it using the @Alternative and @Priority annotations.

@Alternative
@Priority(Interceptor.Priority.APPLICrATION)
@ApplicationScoped
public class ManagerSupplier implements Supplier<DatabaseManager> {

    @Produces
    @Database(DatabaseType.COLUMN)
    public DatabaseManager get() {
        Settings settings = Settings.builder()
                .put("credential", "value")
                .build();
        DatabaseConfiguration configuration = new NoSQLColumnProvider();
        DatabaseManagerFactory factory = configuration.apply(settings);
        return factory.apply("database");
    }
}

You can work with several column database instances through CDI qualifier. To identify each database instance, make a ColumnManager visible for CDI by putting the @Produces and the @Database annotations in the method.

@Inject
@Database(value = DatabaseType.COLUMN, provider = "databaseA")
private ColumnTemplate templateA;

@Inject
@Database(value = DatabaseType.COLUMN, provider = "databaseB")
private ColumnTemplate templateB;

// producers methods
@Produces
@Database(value = DatabaseType.COLUMN, provider = "databaseA")
public ColumnManager getManagerA() {
    return manager;
}

@Produces
@Database(value = DatabaseType.COLUMN, provider = "databaseB")
public ColumnManager getManagerB() {
    return manager;
}

Document

Jakarta NoSQL provides a Document template to explore the specific behavior of this NoSQL type.

Eclipse JNoSQL offers a mapping implementation for Document NoSQL types:

<dependency>
    <groupId>org.eclipse.jnosql.mapping</groupId>
    <artifactId>jnosql-mapping-document</artifactId>
    <version>1.1.0</version>
</dependency>

Furthermore, check for a Document databases. You can find some implementations in the JNoSQL Databases.

@Inject
DocumentTemplate template;
...

Car ferrari = Car.id(1L)
        .name("ferrari")
        .city("Rome")
        .type(CarType.SPORT);

template.insert(ferrari);
Optional<Car> car = template.find(Car.class, 1L);

template.delete(Car.class).where("id").eq(1L).execute();

Optional<Car> result = template.singleResult("select * from Car where _id = 1");

Document is database agnostic. Thus, you can change the database in your application with no or minimal impact on source code.

You can define the database settings using the MicroProfile Config specification, so you can add properties and overwrite it in the environment following the Twelve-Factor App.

jnosql.document.database=<DATABASE>
jnosql.document.provider=<CLASS-DRIVER>
jnosql.provider.host=<HOST>
jnosql.provider.user=<USER>
jnosql.provider.password=<PASSWORD>
Tip
The jnosql.document.provider property is necessary when you have more than one driver in the classpath. Otherwise, it will take the first one.

These configuration settings are the default behavior. Nevertheless, there is an option to programmatically configure these settings. Create a class that implements the Supplier<DocumentManager>, then define it using the @Alternative and @Priority annotations.

@Alternative
@Priority(Interceptor.Priority.APPLICATION)
@ApplicationScoped
public class ManagerSupplier implements Supplier<DatabaseManager> {

    @Produces
    @Database(DatabaseType.DOCUMENT)
    public DatabaseManager get() {
        Settings settings = Settings.builder()
                .put("credential", "value")
                .build();
        DatabaseConfiguration configuration = new NoSQLDocumentProvider();
        DatabaseManagerFactory factory = configuration.apply(settings);
        return factory.apply("database");
    }
}

You can work with several document database instances through CDI qualifier. To identify each database instance, make a DocumentManager visible for CDI by putting the @Produces and the @Database annotations in the method.

@Inject
@Database(value = DatabaseType.DOCUMENT, provider = "databaseA")
private DocumentTemplate templateA;

@Inject
@Database(value = DatabaseType.DOCUMENT, provider = "databaseB")
private DocumentTemplate templateB;

// producers methods
@Produces
@Database(value = DatabaseType.DOCUMENT, provider = "databaseA")
public DocumentManager getManagerA() {
    return manager;
}

@Produces
@Database(value = DatabaseType.DOCUMENT, provider = "databaseB")
public DocumentManager getManagerB() {
    return manager;
}

Graph

Currently, the Jakarta NoSQL doesn’t define an API for Graph database types but Eclipse JNoSQL provides a Graph template to explore the specific behavior of this NoSQL type.

Eclipse JNoSQL offers a mapping implementation for Graph NoSQL types:

<dependency>
    <groupId>org.eclipse.jnosql.mapping</groupId>
    <artifactId>jnosql-mapping-graph</artifactId>
    <version>1.1.0</version>
</dependency>

Despite the other three NoSQL types, Eclipse JNoSQL API does not offer a communication layer for Graph NoSQL types. Instead, it integrates with Apache Tinkerpop 3.x.

@Inject
GraphTemplate template;
...

Category java = Category.of("Java");
Book effectiveJava = Book.of("Effective Java");

template.insert(java);
template.insert(effectiveJava);
EdgeEntity edge = template.edge(java, "is", software);

Stream<Book> books = template.getTraversalVertex()
        .hasLabel("Category")
        .has("name", "Java")
        .in("is")
        .hasLabel("Book")
        .getResult();

Apache TinkerPop is database agnostic. Thus, you can change the database in your application with no or minimal impact on source code.

You can define the database settings using the MicroProfile Config specification, so you can add properties and overwrite it in the environment following the Twelve-Factor App.

jnosql.graph.provider=<CLASS-DRIVER>
jnosql.provider.host=<HOST>
jnosql.provider.user=<USER>
jnosql.provider.password=<PASSWORD>
Tip
The jnosql.graph.provider property is necessary when you have more than one driver in the classpath. Otherwise, it will take the first one.

These configuration settings are the default behavior. Nevertheless, there is an option to programmatically configure these settings. Create a class that implements the Supplier<Graph>, then define it using the @Alternative and @Priority annotations.

@Alternative
@Priority(Interceptor.Priority.APPLICATION)
public class ManagerSupplier implements Supplier<Graph> {

    @Produces
    public Graph get() {
        Graph graph = ...; // from a provider
        return graph;
    }
}

You can work with several document database instances through CDI qualifier. To identify each database instance, make a Graph visible for CDI by putting the @Produces and the @Database annotations in the method.

@Inject
@Database(value = DatabaseType.GRAPH, provider = "databaseA")
private GraphTemplate templateA;

@Inject
@Database(value = DatabaseType.GRAPH, provider = "databaseB")
private GraphTemplate templateB;

// producers methods
@Produces
@Database(value = DatabaseType.GRAPH, provider = "databaseA")
public Graph getManagerA() {
    return manager;
}

@Produces
@Database(value = DatabaseType.GRAPH, provider = "databaseB")
public Graph getManagerB() {
    return manager;
}

Eclipse JNoSQL does not provide Apache Tinkerpop 3 dependency; check if the provider does. Otherwise, do it manually.

<dependency>
    <groupId>org.apache.tinkerpop</groupId>
    <artifactId>jnosql-gremlin-core</artifactId>
    <version>${tinkerpop.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.tinkerpop</groupId>
    <artifactId>jnosql-gremlin-groovy</artifactId>
    <version>${tinkerpop.version}</version>
</dependency>

Jakarta Data

Eclipse JNoSQL as a Jakarta Data implementations supports the following list of predicate keywords on their repositories.

Keyword Description Method signature Sample

And

The and operator.

findByNameAndYear

Or

The or operator.

findByNameOrYear

Between

Find results where the property is between the given values

findByDateBetween

LessThan

Find results where the property is less than the given value

findByAgeLessThan

GreaterThan

Find results where the property is greater than the given value

findByAgeGreaterThan

LessThanEqual

Find results where the property is less than or equal to the given value

findByAgeLessThanEqual

GreaterThanEqual

Find results where the property is greater than or equal to the given value

findByAgeGreaterThanEqual

Like

Finds string values "like" the given expression

findByTitleLike

In

Find results where the property is one of the values that are contained within the given list

findByIdIn

True

Finds results where the property has a boolean value of true.

findBySalariedTrue

False

Finds results where the property has a boolean value of false.

findByCompletedFalse

Not

The logical NOT negates all the previous keywords, but True or False. It needs to include as a prefix "Not" to a keyword.

findByNameNot, findByAgeNotGreaterThan

OrderBy

Specify a static sorting order followed by the property path and direction of ascending.

findByNameOrderByAge

OrderBy____Desc

Specify a static sorting order followed by the property path and direction of descending.

findByNameOrderByAgeDesc

OrderBy____Asc

Specify a static sorting order followed by the property path and direction of ascending.

findByNameOrderByAgeAsc

OrderBy____(Asc|Desc)*(Asc|Desc)

Specify several static sorting orders

findByNameOrderByAgeAscNameDescYearAsc

Warning
Eclipse JNoSQL does not support OrderBy annotation.

More Information

Check the reference documentation and JavaDocs to learn more.

Code of Conduct

This project is governed by the Eclipse Foundation Code of Conduct. By participating, you are expected to uphold this code of conduct. Please report unacceptable behavior to [email protected].

Getting Help

Having trouble with Eclipse JNoSQL? We’d love to help!

Please report any bugs, concerns or questions with Eclipse JNoSQL to https://github.com/eclipse/jnosql.

If your issue refers to the JNoSQL databases project or the JNoSQL extensions project, please, open the issue in this repository following the instructions in the templates.

Building from Source

You don’t need to build from source to use the project, but should you be interested in doing so, you can build it using Maven and Java 11 or higher.

mvn clean install

Contributing

We are very happy you are interested in helping us and there are plenty ways you can do so.

  • Open an Issue: Recommend improvements, changes and report bugs

  • Open a Pull Request: If you feel like you can even make changes to our source code and suggest them, just check out our contributing guide to learn about the development process, how to suggest bugfixes and improvements.

Here are the badges of this project:

measure?project=org.eclipse
measure?project=org.eclipse
measure?project=org.eclipse
measure?project=org.eclipse
measure?project=org.eclipse
measure?project=org.eclipse
measure?project=org.eclipse
measure?project=org.eclipse

Testing Guideline

This project’s testing guideline will help you understand Jakarta Data’s testing practices. Please take a look at the file.

Migration

This migration guide explains how to upgrade from Eclipse JNoSQL version 1.0.0-b6 to the latest version, considering two significant changes: upgrading to Jakarta EE 9 and reducing the scope of the Jakarta NoSQL specification to only run on the Mapping. The guide provides instructions on updating package names and annotations to migrate your Eclipse JNoSQL project successfully.

To know more

If you want to know more about both the communication and mapping layer, there are two complementary files for it each specific topic:

More Repositories

1

mosquitto

Eclipse Mosquitto - An open source MQTT broker
C
7,649
star
2

che

Kubernetes based Cloud Development Environments for Enterprise Teams
TypeScript
6,868
star
3

jetty.project

Eclipse Jetty® - Web Container & Clients - supports HTTP/2, HTTP/1.1, HTTP/1.0, websocket, servlets, and more
Java
3,655
star
4

paho.mqtt.android

MQTT Android
Java
2,708
star
5

paho.mqtt.golang

Go
2,381
star
6

eclipse-collections

Eclipse Collections is a collections framework for Java with optimized data structures and a rich, functional and fluent API.
Java
2,283
star
7

paho.mqtt.java

Eclipse Paho Java MQTT client library. Paho is an Eclipse IoT project.
Java
2,000
star
8

paho.mqtt.python

paho.mqtt.python
Python
1,946
star
9

sumo

Eclipse SUMO is an open source, highly portable, microscopic and continuous traffic simulation package designed to handle large networks. It allows for intermodal simulation including pedestrians and comes with a large set of tools for scenario creation.
1,902
star
10

paho.mqtt.c

An Eclipse Paho C client library for MQTT for Windows, Linux and MacOS. API documentation: https://eclipse.github.io/paho.mqtt.c/
C
1,736
star
11

eclipse.jdt.ls

Java language server
Java
1,410
star
12

mraa

Linux Library for low speed IO Communication in C with bindings for C++, Python, Node.js & Java. Supports generic io platforms, as well as Intel Edison, Intel Joule, Raspberry Pi and many more.
C
1,349
star
13

paho.mqtt.embedded-c

Paho MQTT C client library for embedded systems. Paho is an Eclipse IoT project (https://iot.eclipse.org/)
C
1,271
star
14

paho.mqtt.javascript

paho.mqtt.javascript
JavaScript
1,115
star
15

openvsx

An open-source registry for VS Code extensions
Java
1,059
star
16

milo

Eclipse Miloâ„¢ - an open source implementation of OPC UA (IEC 62541).
Java
976
star
17

omr

Eclipse OMRâ„¢ Cross platform components for building reliable, high performance language runtimes
C++
917
star
18

paho.mqtt.cpp

C++
875
star
19

xtext

Eclipse Xtextâ„¢ is a language development framework
Java
715
star
20

upm

UPM is a high level repository that provides software drivers for a wide variety of commonly used sensors and actuators. These software drivers interact with the underlying hardware platform through calls to MRAA APIs.
C++
651
star
21

microprofile

Repository for important documentation - the index to the project / community
Java
635
star
22

californium

CoAP/DTLS Java Implementation
Java
620
star
23

leshan

Java Library for LWM2M
Java
614
star
24

paho.mqtt-spy

mqtt-spy is an open source desktop & command line utility intended to help you with monitoring activity on MQTT topics
Java
605
star
25

jkube

Build and Deploy java applications on Kubernetes
Java
593
star
26

steady

Analyses your Java applications for open-source dependencies with known vulnerabilities, using both static analysis and testing to determine code context and usage for greater accuracy. https://eclipse.github.io/steady/
Java
516
star
27

sprotty

A diagramming framework for the web
TypeScript
514
star
28

buildship

The Eclipse Plug-ins for Gradle project.
Java
507
star
29

paho.mqtt.m2mqtt

C#
495
star
30

lsp4j

A Java implementation of the language server protocol intended to be consumed by tools and language servers implemented in Java.
Java
473
star
31

kura

Eclipse Kuraâ„¢ project
Java
469
star
32

wakaama

Eclipse Wakaama is a C implementation of the Open Mobile Alliance's LightWeight M2M protocol (LWM2M).
C
465
star
33

streamsheets

An open-source tool for processing stream data using a spreadsheet-like interface.
JavaScript
441
star
34

paho.mqtt.rust

paho.mqtt.rust
Rust
422
star
35

jifa

🔬 Online Heap Dump, GC Log & Thread Dump Analyzer. Make troubleshooting easy.
Java
421
star
36

hawkbit

Eclipse hawkBitâ„¢
Java
416
star
37

eclipse-collections-kata

Eclipse Collections Katas
Java
411
star
38

hono

Eclipse Honoâ„¢ Project
Java
378
star
39

repairnator

Software development bots for Github. Join the bot revolution! 🌟🤖🌟💞
Java
370
star
40

ponte

Ponte Project
JavaScript
360
star
41

birt

Eclipse BIRTâ„¢ The open source reporting and data visualization project.
Java
355
star
42

rdf4j

Eclipse RDF4J: scalable RDF for Java
Java
323
star
43

paho.mqtt-sn.embedded-c

Paho C MQTT-SN gateway and libraries for embedded systems. Paho is an Eclipse IoT project.
C++
305
star
44

paho.golang

Go libraries
Go
269
star
45

lemminx

XML Language Server
Java
242
star
46

vorto

Vorto Project
Java
221
star
47

kapua

Java
218
star
48

elk

Eclipse Layout Kernel - Automatic layout for Java applications.
Java
211
star
49

corrosion

Eclipse Corrosion - Rust edition in Eclipse IDE
Java
199
star
50

capella

Open Source Solution for Model-Based Systems Engineering
Java
197
star
51

dirigible

Eclipse Dirigibleâ„¢ Project
JavaScript
196
star
52

tahu

Eclipse Tahu addresses the existence of legacy SCADA/DCS/ICS protocols and infrastructures and provides a much-needed definition of how best to apply MQTT into these existing industrial operational environments.
Java
196
star
53

microprofile-config

MicroProfile Configuration Feature
Java
182
star
54

wildwebdeveloper

Simple and productive Web Development Tools in the Eclipse IDE
Java
181
star
55

pdt

PHP Development Tools project (PDT)
PHP
178
star
56

org.aspectj

Java
172
star
57

xacc

XACC - eXtreme-scale Accelerator programming framework
C++
137
star
58

thingweb.node-wot

thingweb.node-wot
TypeScript
130
star
59

microprofile-rest-client

MicroProfile Rest Client
Java
124
star
60

tycho

Tycho project repository (tycho)
Java
119
star
61

microprofile-conference

Microprofile.io Demo Code - Web Services Conference Application
Java
117
star
62

microprofile-fault-tolerance

microprofile fault tolerance
Java
115
star
63

microprofile-samples

Micro Profile Samples
Java
115
star
64

xtext-core

xtext-core
Java
114
star
65

microprofile-open-api

Microprofile open api
Java
112
star
66

gef

Eclipse GEFâ„¢
Java
111
star
67

jbom

Java
104
star
68

paho.mqtt.testing

An Eclipse Paho project - a Python broker for testing
Python
104
star
69

xtext-xtend

xtext-xtend
Java
100
star
70

transformer

Eclipse Transformer provides tools and runtime components that transform Java binaries, such as individual class files and complete JARs and WARs, mapping changes to Java packages, type names, and related resource names.
Java
97
star
71

microprofile-health

microprofile-health
Java
95
star
72

microprofile-metrics

microprofile-metrics
Java
94
star
73

microprofile-graphql

microprofile-graphql
Java
93
star
74

sw360

SW360 project
Java
92
star
75

microprofile-jwt-auth

Java
92
star
76

tinydtls

Eclipse tinydtls
C
92
star
77

microprofile-lra

microprofile-lra
Java
90
star
78

mosaic

Eclipse MOSAIC is a Multi-Domain and Multi-Scale Simulation Framework for Automated and Connected Mobility Scenarios.
Java
81
star
79

kuksa.val

kuksa.val
Rust
80
star
80

nebula

Nebula Project
Java
79
star
81

microprofile-reactive-streams-operators

Microprofile project
Java
75
star
82

mosquitto.rsmb

Mosquitto rsmb
C
75
star
83

microprofile-starter

MicroProfile project generator source code
Java
68
star
84

aCute

Eclipse aCute - C# edition in Eclipse IDE
Java
65
star
85

ditto-examples

Eclipse Dittoâ„¢: Digital Twin framework - Examples
Java
63
star
86

tm4e

TextMate support in Eclipse IDE
Java
60
star
87

californium.tools

Californium project
Java
59
star
88

microprofile-opentracing

microprofile-opentracing
Java
57
star
89

microprofile-reactive-messaging

Java
57
star
90

eclemma

🌘 Java Code Coverage for Eclipse IDE
Java
57
star
91

texlipse

Eclipse Texlipse
Java
56
star
92

dartboard

Dart Plugin for Eclipse
Java
55
star
93

jnosql-databases

This project contains Eclipse JNoSQL databases
Java
54
star
94

windowbuilder

Eclipse Windowbuilder
Java
54
star
95

lsp4e

Language Server Protocol support in Eclipse IDE
Java
53
star
96

mita

mita
Xtend
53
star
97

xtext-eclipse

xtext-eclipse
Java
49
star
98

che-che4z-lsp-for-cobol

COBOL Language Support provides autocomplete, highlighting and diagnostics for COBOL code and copybooks
COBOL
46
star
99

packages

IoT Packages project
Smarty
44
star
100

winery

Eclipse Winery project
Java
44
star