Java Programmerweiterungen ( DLL? )

S

Sasku

Gast
Hey Leute,

ich wage mich nach n paar Monaten wieder an Java ran und wollte fragen, ob ich Programmerweiterungen also DLLs nutzen kann? Also wie z.b. in C# einfach DLL einbinden und dann hat man mehr oder weniger ne selbst fertig gestellte klasse die man einfach nutzen kann ... geht das in Java auch so einfach?


Und falls es nicht so geht eine andere Frage ..

Wenn ich jetzt eine Klasse habe die ich in vielen verschiedenen Programmen nutzen will ( und nicht immer die Klasse per Copy Paste ins Programm einfügen will ) .. kann man die irgendwo speichern, dass man danach nur noch einen Import machen muss und dann darauf zugreifen kann .. ist das irgendwie möglich?
 
DLL laden kannst du mit System.load(Pfad zu DLL); Link
 
Dafür gibt es JNI (Java Native Interface)

Zum Zweiten: du erstellst eine Jar Datei und bindest sie in den classpath ein. So funktionieren Java Erweiterungen.
Ergänzung ()

dominic.e schrieb:
DLL laden kannst du mit System.load(Pfad zu DLL); Link

Und wie kann man die exportierten Funktionen der DLL aufrufen? Nur Laden allein ist ja nicht sehr nützlich :)
Dafür braucht man dann JNI oder JNA (ein JNI Wrapper) http://de.wikipedia.org/wiki/Java_Native_Access
 
Zuletzt bearbeitet:
Bevor Du Dich mit der Erstellung einer DLL (z.B. über Visual Studio in C oder C++) und das Einbinden in ein Java Programm mittels JNI wagst, würde ich Dir eher empfehlen das Thema "Packages in Java" genauer in Augenschein zu nehmen. Hierbei geht es um die Zusammenstellung/Verwaltung/Einbindung von Klassen.
 
Da muss man sich dann mal ins Thema JNI (Java Native Interface) einlesen ;)
Habe den Kram gerade erst an der Arbeit durchgemacht. Da muss man einiges beachten.
 
Danke schon mal ... Hilft mir gut weiter!

MyPVR schrieb:
Bevor Du Dich mit der Erstellung einer DLL (z.B. über Visual Studio in C oder C++) und das Einbinden in ein Java Programm mittels JNI wagst, würde ich Dir eher empfehlen das Thema "Packages in Java" genauer in Augenschein zu nehmen. Hierbei geht es um die Zusammenstellung/Verwaltung/Einbindung von Klassen.

Ja werde ich schon noch machen. Das war bloß eine Frage, die mir gerade in den Sinn gekommen ist, da ich in C# sowas recht schnell und einfach hab machen können. Da ich jetzt aber wieder Java machen möchte und ich bestimmte Teile von Programmen immer wieder brauche ( wie zum Beispiel Datenbank Anbindungen .. da habe ich ne eigene DLL ) hat mich das jetzt interessiert.. aber danke werde ich auf alle Fälle machen! :)
 
Einer der Vorteile von Java ist es, daß man damit Cross-Platform entwickeln kann. Durch den Einsatz einer spezifischen Windows Library verliert man diesen aber. Diese Überlegung sollte zumindest wenn es über kleine Beispiele hinaus geht im Hinterkopf haben.
 
Sasku schrieb:
Ja werde ich schon noch machen. Das war bloß eine Frage, die mir gerade in den Sinn gekommen ist, da ich in C# sowas recht schnell und einfach hab machen können. Da ich jetzt aber wieder Java machen möchte und ich bestimmte Teile von Programmen immer wieder brauche ( wie zum Beispiel Datenbank Anbindungen .. da habe ich ne eigene DLL ) hat mich das jetzt interessiert.. aber danke werde ich auf alle Fälle machen!

.dll sind Windows-Spezifisch. Mit Java erstellt man die benötigen/gewünschten Klassen, die eine logische Einheit bilden und packt diese in eine .jar Datei. Andere Programme oder Programmteile, können diese dann ganz analog zur .dll einbinden und nutzen.

Das grundsätzliche Konzept findest Du also ganz analog auch in Java wieder. Hat nur einen anderen Namen.

In größeren Projekten verwendet man entsprechende Build-Tools, mit denen man die Abhängigkeiten recht komfortabel managen kann.

http://zeroturnaround.com/rebellabs...nagement-works-with-maven-gradle-and-ant-ivy/
 
eine DLL war nur ein kleines Beispiel ... weil mir das jetzt aus C# bekannt war. Aber natürlich bleibt mir der größte Vorteil Javas im Hinterkopf. ;)
 
Würde ich auch sagen. Wer DLLs braucht, der ist bei Java falsch.
Da kann man gleich C/C++ nehmen.

C# hat es auch nur weil es eine Microsoft Sprache ist, die sich nicht wirklich um andere Plattformen kümmert.
Mir kommt C# auch wie Ruby vor, d.h. alles rein was einem einfällt, egal ob Sinn oder Unsinn. Dann sieht man auf der Arbeit die seltsamsten Programmierstile, weil man die gleiche Sache auf 1000 Arten programmieren kann und die Programmierer meinen es wäre cool den Code minimal (und kryptisch) zu halten.

Na dann viel Spaß wenn das einer warten und erweitern soll. Beim Projekt gespart und dann kommt der Support 10x teurer. Auch deswegen ist Java populär, es gibt Standards an die sich fast alle halten, auch wenn dies bedeutet dass einiges etwas umständlicher ist...

In Ruby gibt es garantiert 100 Arten eine Schleife zu schreiben :D
 
Zuletzt bearbeitet:
black90 schrieb:
Würde ich auch sagen. Wer DLLs braucht, der ist bei Java falsch.
Da kann man gleich C/C++ nehmen.

Sorry, aber das ist Unsinn. Natürlich gibt es Anwendungsfälle für das Einbinden von nativem Code. JEP 191 gibt es sicher nicht, weil findige Programmierer in ihrer Freizeit Langeweile haben... Ist auch mit anderen Sprachen gang und gäbe, dass man z.B. performance-kritische Teile in besonders dafür geeigneten Sprachen umsetzt.

Nativer Code bedeutet halt entweder mehr Aufwand, will man mehrere Plattformen bedienen oder den Verlust der Plattformunabhängigkeit, was ja nicht zwingend etwas schlimmes ist, wenn man nur für eine Plattform entwickelt.
 
Hängt euch doch nicht so stark an DLLs auf, aus dem 1. Post geht nicht deutlich hervor, ob er wirklich dlls einbinden will oder dies nur als Beispiel für die Einbindung einer Bibliothek genannt hat, weil er dlls kennt, aber noch nichts von jars gehört hat.
 
ice-breaker schrieb:
Hängt euch doch nicht so stark an DLLs auf, aus dem 1. Post geht nicht deutlich hervor, ob er wirklich dlls einbinden will oder dies nur als Beispiel für die Einbindung einer Bibliothek genannt hat, weil er dlls kennt, aber noch nichts von jars gehört hat.

ich wusste bis jetzt hald nur nicht, dass man JARS mit einbinden kann ( ansonsten als fertig kompiliertes Programm schon ) .. .mir waren in dieser Hinsicht bis jetzt nur DLLs bekannt .. .deswegen war es ein Beispiel ... so wie du gesagt hast :)

Ich wollte nur wissen wie man ein Java Programm um Beispielsweise eine Klasse die ich sehr oft verwende erweitere, damit ich bestimmte Methoden einfach öfter hernehmen kann .. und wenn das so einfach geht, dass man diese JAR in den Build Path ( also unter Eclipse "Properties>Java Build Path> Libaries") einbinden kann, dann ist das doch super!

Und wenn es so wäre, dass ich ne DLL ( wie gesagt .. DLL war eigentlich nur ein Beispiel ) einbinden möchte, dann ist mir schon bewusst, dass ich dann nur noch für Windows programmiere ..
 
Zurück
Oben