community projekt

Onur

Mitglied
Hallo Liebes Java Forum,

ich richte mich hiermit vor allem an die sehr sehr erfahrenen Entwickler unter uns.
Ich hätte da so eine Idee und wollte wissen ob ich dafür hier begeisterung entfachen kann.

Language Integrated Query (LINQ) (Für die JDK und alle Sprachen die es Unterstützten Java, Kotlin, Scale, Groovy keine Ahnung was es noch alles gibt)​


für alle damit nichts anfangen können MS-Doku LINQ ist ein Comfort auf das man nie wieder verzichten möchte sobald man es einmal hatte .
( ich würde auch ungern auf Toileten Papier verzichten irgendwie würde es gehen auch ohne aber nöö "ungefähr so verhält es sich mit LINQ")..

Wäre das nicht ein Mega Ding wen wir das als OpenSource Projekt Starten könnten ( wo die Erfahrenen Entwickler die führung übernehmen und jeder der es möchte daran mitentwickeln kann)..



=> außerdem wäre es für Leute wie mich vlt. die eintrittskarte in JAVA entwicklung ( aka. projekterfahrung in der Java Entwicklung )

Wir könnten es Ja als eine art FrameWork entwickeln und auf GitHub diversen Anderen Repos pushen...

wäre sowas Machbar hier ??


Falls sowas exestiert bitte her mit dem Namen mit einem link bitte
 
wollte wissen ob ich dafür hier begeisterung entfachen kann.
Bei mir noch nicht wirklich. Ich sehe da irgendwie keinen echten Mehrwert, außer dass man für verschiedene Quellen eine einheitliche Anfragesprache hat (und damit die Sprache selbst komplexer wird). Das mag vielleicht auch einfach daran liegen, dass ich mich mit LINQ nicht auskenne.

Die Queries selbst scheinen ja ähnlich zu den Java Streams zu sein, das Beispiel aus dem Link von Dir ließe sich in Java schreiben als
Java:
IntStream scoreQuery = IntStream.of(scores). // from score in scores
    filter(score -> score > 80); // where score > 80, 
                                 // select können wir uns sparen.

scoreQuery.forEach(i -> System.out.print(i + " "));

oder eben kurz
Java:
IntStream.of(scores).filter(score -> score > 80).forEach(i -> System.out.print(i + " "));

Für die DB gibts JPA (mit einer nicht wirklich schönen Criteria API), wer LINQ-ähnliches will, könnte auf Jinq zurückgreifen.

Bin mal gespannt, was @kneitzel dazu meint. Der hat ja viel mit MS gemacht.
 
Lukas Eder hat vor einigen Jahren so eine API in seinem Blog beschrieben.

Ich habe es eider nicht gefunden, weil es dort keine Suchfunktion gibt.

Im Java-Magazin von Oracle


stand auch mal etwas über so ein API.

Dann gibt es auch noch JOOQ von Lukas Eder.

Der schreibt auch interessante Beiträge über Java.
 
Das es so etwas gibt, heisst nicht, dass man es nicht mal selbst probieren sollte.

Es gibt dabei folgende Probleme:

Man muss aus dem Datenbank-Schema Entity/Bean-Code generieren (oder von Hand schreiben).

Die Lambdas werden in Java auskompiliert, man benötigt aber eigentlich ihren Code (AST) um an Ausdücke mit Feldnamen heranzukommen.
 
Bin mal gespannt, was @kneitzel dazu meint. Der hat ja viel mit MS gemacht.
Also ich sehe da nicht wirklich den Bedarf muss ich gestehen. Hier wird die SQL Syntax künstlich in den Programmcode gequetscht.

Hier wurde jetzt auf Collections aufgesetzt, aber bei LINQ ging es nicht um Ausdrücke auf Collections sondern es ging um Datenbankabfragen.

Ich habe also eine Datenbank und dann frage ich die Datenbank ab. Also das typische Beispiel wäre da dann eher etwas wie:
Java:
Northwnd db = new Northwnd(@"c:\northwnd.mdf"); 
 
// Query for customers in London. 
IQueryable<Customer> custQuery = 
    from cust in db.Customers 
    where cust.City == "London" 
    select cust;
entnommen aus: https://docs.microsoft.com/de-de/do...de/concepts/linq/introduction-to-linq-queries

Ich bin hier für eine traditionelle, saubere Gliederung. Und dann habe ich in Java halt mein Repository. Und da habe ich dann ein CustomerRepository mit einer Methode, die mir nach City alles filtert. Das ist dann z.B. ein einfaches Interface mit einer Methoden-Deklaration und einer Annotation mit SQL (artiger) Syntax drüber.

Ich fürchte, dass dieses LINQ eher dazu verleitet, dass man Dinge nicht sauber kapselt und entsprechend sauber strukturiert nutzt.

Daher sehe ich das als eine nette Spielerei von Microsoft, der ich nicht zu viel Bedeutung beimesse und die ich in der Java Welt nicht vermisse.

Das ist aber natürlich meine pers. Sichtweise, die auch durch meine Projekte geprägt ist. Es mag Bereiche geben, wo das zu einem Killer Feature wird, das man nicht vermissen möchte. Aber dann habe ich diese noch nicht gesehen / gefunden.
 
@kneitzel also LINQ vereinfacht einiges immens durch den Framework LINQ kann man einheitliche Frage schema auf alles anwenden was LINQ unterstüzt.

Im Grunde genommen sieht die Architektur so aus
LINQ.jpg

Quelle 2

hier mal ein Kleiner ausschnitt möglicher Datenquellen der beitrag ist aus 2008 => die liste dürfte mittlerweile großer sein Quelle2



"LINQ ist eine Sammlung von Erweiterungsmethoden, die auf Monaden operieren. Zudem gibt es in einigen .NET-Sprachen wie C#, VB.NET und F# eigene Schlüsselwörter für eine vorbestimmte Menge an LINQ-Methoden. Monaden werden in .NET als generische Klassen oder Interfaces mit einzelnem Typargument (z. B. IEnumerable<T>, IObservable<T>) abgebildet."
=> ich habe die Hyperlinks aus dem Wikipedia artikel nicht rausgenommen
Quelle3



Ich fürchte, dass dieses LINQ eher dazu verleitet, dass man Dinge nicht sauber kapselt und entsprechend sauber strukturiert nutzt.
Das weiß ich nicht ob LINQ dazu verleitet.

Mir macht es das Leben einfacher da ich mit einer einheitlichen Syntax (SQL ähnliche abfrage mechanismen)
XML
JSON
JA sogar meinen G-Mail nachrichten

Nach daten Filtern kann um sie weiter zu verarbeiten.

Wenn das ein Verstoß gegen Saubere Kapselung darstellt würde ich mich Freuen wenn es mir jemand erklärt warum
 

Zurück
Oben