ubuntuusers.de

Was kann OpenJDK

Status: Ungelöst | Ubuntu-Version: Ubuntu 11.10 (Oneiric Ocelot)
Antworten |

gurbelunder

Avatar von gurbelunder

Anmeldungsdatum:
6. Juni 2006

Beiträge: 268

Wohnort: Leipzig

Hallo an alle,

also, folgendes Problem: Ich erstelle gerade eine Datenbankanwendung für das Geschäft meines Paps zur Waren und Kundenverwaltung. Basis ist eine MySQL Datenbank, als Oberfläche, und jetzt kommts, soll eine Java Oberfläche dienen. Warum kann man einfach definieren: Das Projekt dient mir als Abschlussfacharbeit zu meinem Techniker. Im Unterricht haben wir auch Java behandelt, daher habe ich meine Dozenten zur Ansprache bei Problemen. Dazu kommt noch, dass Linux, in Form von Ubuntu, und Windows Maschinen im Geschäft laufen, und die Anwendung innerhalb des Netzwerkes auf ALLEN Rechnern laufen soll. Zusätzlich bin ich selber nicht bereit, mir extra für die Facharbeit eine neue objektorientierte Programmiersprache anzulernen. Das wäre erlich gesagt, etwas tooo much...

Nun meine Frage zum ganzen, erstmal rein grundlegend: Da bei Ubuntu zur Zeit Java nicht standardmäßig installiert und unterstützt wird, würde ich gerne mal von euch wissen, ob ich das mittlerweile vorhandene OpenJDK oder IceTM der wie das hieß auch so nutzen kann, dass ich eine objektorientierte Programmierung ansetzen kann, also so richtig "modern" halt mit Klassen, Methoden etc, oder muss ich Java von Sun/Oracle einbinden?

Mich würde halt auch einfach die nicht vorhandene Updatefähigkeit stören.

Zusätzlich würde ich mich über Tipps in Sachen grafischer Oberfläche zur Programmierung freuen, mit der ich halt auch gleich die Oberfläche des Javatools aufsetzen kann. Hab schon häufig mit Eclipse gearbeitet, aber das hatte, glaube ich, nicht diese Elemente, dass ich mir eine grafische Oberfläche zaubern kann, ohne jedes Element von Hand zu Programmierung. Mein Schlagwort wäre da zur Begriffserklärung (jetzt bitte nicht ekeln 😉) Visual Studio, da kann ich das ja so schnell mal per Drag & Drop aufsetzen.

Danke euch erstmal im vorraus.

David

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13209

Hallo,

gurbelunder schrieb:

Nun meine Frage zum ganzen, erstmal rein grundlegend: Da bei Ubuntu zur Zeit Java nicht standardmäßig installiert und unterstützt wird, würde ich gerne mal von euch wissen, ob ich das mittlerweile vorhandene OpenJDK oder IceTM der wie das hieß auch so nutzen kann, dass ich eine objektorientierte Programmierung ansetzen kann, also so richtig "modern" halt mit Klassen, Methoden etc, oder muss ich Java von Sun/Oracle einbinden?

Hm, Du könntest es so machen:

1
$ sudo apt-get default-jdk default-jdk-doc

Mich würde halt auch einfach die nicht vorhandene Updatefähigkeit stören.

s.o.

Zusätzlich würde ich mich über Tipps in Sachen grafischer Oberfläche zur Programmierung freuen, mit der ich halt auch gleich die Oberfläche des Javatools aufsetzen kann. Hab schon häufig mit Eclipse gearbeitet, aber das hatte, glaube ich, nicht diese Elemente, dass ich mir eine grafische Oberfläche zaubern kann, ohne jedes Element von Hand zu Programmierung. Mein Schlagwort wäre da zur Begriffserklärung (jetzt bitte nicht ekeln 😉) Visual Studio, da kann ich das ja so schnell mal per Drag & Drop aufsetzen.

Du suchst einen GUI-Builder. netbeans hat von jeher einen recht guten - ich habe allerdings schon seit einigen Versionen nicht mehr geschaut. Möglicherweise gibt es mittlerweile auch einen Swing-Builder für Eclipse, aber das weiß ich nicht. Eine andere Variante ist, die ganze Sache als Anwendung auf der Eclipse-Plattform zu machen; ich denke allerdings dass das recht komplex werden könnte, weil Du nicht nur SWT lernen musst sondern auch OSGi und überhaupt, wie die Plattform werkelt.

Also, schau Dir netbeans an. Bin mir im Moment nicht sicher, ob es das als Paket gibt.

Ciao

robert

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Ich habe keinen gescheiten GUI-Builder für Java gefunden - sowohl technisch als auch vom Konzept an sich. Die haben immer direkt Code erstellt und gehen nicht über ein neutrales Zwischenformat. Daher habe ich mich für QtJambi entschieden. Da habe ich das exzellente Qt-Framework inklusive der tollen Tools rund herum, speziell den QtDesigner für die GUI.

Allerdings kenne ich den GUI-Builder von Netbeans nicht.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

Wohnort: Berlin

Ich hatte - allerdings ist das über 5 Jahre her - ein Eclipse-Plugin, ich glaube von omondo - ausprobiert, und es war langsam, der produzierte Code hat mir nicht gefallen.

Einmal war ich gezwungen JDeveloper von Oracle, noch bevor Oracle Sun kaufte, zu benutzen, und das hat mir auch nicht gefallen.

Sobald man Komponenten mit Factorymethoden produziert konnte der GUI-Builder damit nichts anfangen - er zwingt einem letztlich seinen Stil auf - das mag manchem gefallen - mit gefiel es nicht.

Wiederverwertbare Komponenten kann man natürlich auch mit solch einem Tool entwickeln, aber man bindet sich damit auch stark an das Tool, was mir besonders nicht gefallen hat.

Und dann bevorzugen die GUI-Builder auch ihre eigenen Libraries. Wechseln des GUI-Builder ist so schlecht möglich, was wohl die dahinterliegende Idee ist.

Ich würde empfehlen das GUI von Scratch zu entwickeln, und dabei zu lernen, wie man Codewiederholung vermeidet.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13209

user unknown schrieb:

Ich würde empfehlen das GUI von Scratch zu entwickeln, und dabei zu lernen, wie man Codewiederholung vermeidet.

Diesen Ratschlag habe ich auch schon von anderen gehört. Das scheint nicht der Schlechteste zu sein. Damals konnte z.B. der NetBeans GUI-Builder nicht dafür sorgen, dass bestimmte Abstände in der gesamten GUI einheitlich sind, was m.E. einerseits für die optische Erfahrung wichtig ist und andererseits Overhead spart, weil man dann nämlich nur einmal ein Insets Objekt erzeugen muss.

Zum Lernen hingegen finde ich einen GUI-Builder nicht schlecht, weil man dann zumindest das prinzipielle Zusammenspiel der Komponenten kennen lernt. Allerdings ist der generierte Code oft auch fragwürdig; ein häufiges Muster war zu der Zeit z.B., dass haufenweise Adapter (anonyme innere Klassen) erzeugt wurden, die nichts anderes taten als den Methodenaufruf an eine andere Methode weiter zu leiten. Das kann man auch eleganter machen, indem man z.B. weitere Funktionalität in den Adapter packt.

Ciao

robert

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Also ich bin kein Verfechter davon, seine GUI von Hand zu bauen. Argumente dafür gibt es viele, dagegen auch. Sicherlich ist vieles davon Geschmackssache und vom Kontext abhängig. Was mir im speziellen aber immer wieder auffällt: Die Java-Builder (egal ob nun Swing oder SWT) haben (hatten?) gegenüber dem Paradigma vom QtDesigner zwei krasse Nachteile:

  • Es wird direkt Code erzeugt!

  • Man soll seinen eigenen Code in die erzeugte Quellcodedatei schreiben!

Das sind zwei Aspekte mit denen ich nicht leben kann und die imho viel dazu beitragen, dass Leute solche Builder ablehnen. Daher meine Empfehlung von QtJambi - man sollte den QtDesigner wirklich mal ausprobieren. Das geht ja auch ohne, dass ich irgend eine der Zielsprachen kenne. Von der Bedienung und den Konzepten her ist das das beste, was ich kenne.

gurbelunder

(Themenstarter)
Avatar von gurbelunder

Anmeldungsdatum:
6. Juni 2006

Beiträge: 268

Wohnort: Leipzig

Mensch Leute, danke erstmal für die ausgiebigen Antworten. Das sieht doch schonmal sehr gebräuchlich aus.

Ich denke mal, ich werde mit erstmal genauer mit Netbeans auseinander setzten. Das was auch die Empfehlung meiner Dozenten und zwei meiner Mitstudenten. Ich muss auch dazu sagen, dass ich kein Profi aus der Programmierwelt bin, von daher mach ichs mir lieber erstmal einfacher.

Aber ihr habt mir schonmal sehr geholfen, danke euch!

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

Wohnort: Berlin

gurbelunder schrieb:

Ich denke mal, ich werde mit erstmal genauer mit Netbeans auseinander setzten. Das was auch die Empfehlung meiner Dozenten und zwei meiner Mitstudenten. Ich muss auch dazu sagen, dass ich kein Profi aus der Programmierwelt bin, von daher mach ichs mir lieber erstmal einfacher.

Das "daher" ist falsch:

Ich bin ein Profi aus der Programmierwelt, von daher mach ichs mir lieber erstmal einfacher.

gilt für mich auch. Jetzt ist die Frage, was man als einfacher empfindet.

gurbelunder

(Themenstarter)
Avatar von gurbelunder

Anmeldungsdatum:
6. Juni 2006

Beiträge: 268

Wohnort: Leipzig

@user unknown: da muss ich dir recht geben, jedem das seine halt 😉

Mal jetzt ein weiteres Problem, vom logischen her: ich hab ja, wie schon beschrieben, eine MySQL Datenbank. Ich weis auch, dass ich MySQL eigene Benutzer erstellen kann. Diese MySQL Benutzer mit ihrem Passwort möchte ich nun gleichzeitig als "Java Nutzer" benutzen, sprich: der Endnutzer soll sich mit dem gleichen LogIn wie unter MySQL eingerichtet innerhalb der Javaanwendung einloggen, Java kann das Passwort checken und der Nutzer kann in seinem Rahmen Aktionen durchführen, wie er es halt Rechte mäßig darf.

Geht das? Also kann man die MySQL Benutzer auch weiter unter Java mitnutzen?

Eine gute Erweiterung dazu wäre sogar, wenn die Anwendung die Rechte des MySQL Nutzers lesen kann und dementsprechend in der Lage ist, bestimmte Menüpunkte oder der gleichen darzustellen oder zu vergrauen, sprich: Nutzer Admin darf alles, also sieht auch alles und kann alles anklicken, Nutzer Mitarbeiter kann nur neue Kunden und Waren anlegen, der Rest ist ausgegraut, also deaktiviert.

thomsen

Avatar von thomsen

Anmeldungsdatum:
9. Juni 2010

Beiträge: 188

Wohnort: Hamburg

Hallo gurbelunder,

die meiner Ansicht einfachste Variante deine MySQL-User auch als Login-User für deine Java-Anwendung zu nutzen ist die, dass du bei der Anmeldung in deinem Java Programm eine Connection über deinen JDBC-Treiber zur MySQL-Datenbank unter Nutzung der angegebenen Logindaten aufbaust. Wirft die Anmeldung eine Exception (da User oder Passwort nicht stimmen, so lehnt auch dein Programm die Anmeldung ab. Bei Erfolg hälst du dir eine Instanz des Connection-Objektes vor und nutzt dieses für deine Abfragen und Schreibzugriffe.

Wenn du jedoch auch noch in deinen Java-Programm die Rechte des angemeldeten Users kennen möchtest, kannst du über die Connection einfach "show grants" absetzen. Die Auswertung der Rückgabe musst du dann natürlich in deinem Programm umsetzen, aber die Rückgabe enthält zumindest alle Informationen, die du benötigst.

gurbelunder

(Themenstarter)
Avatar von gurbelunder

Anmeldungsdatum:
6. Juni 2006

Beiträge: 268

Wohnort: Leipzig

Das klingt doch schonmal perfekt. Hab halt auch an Exceptions gedacht, die dann Java wirft. Die kann man ja dann auswerten. Aber generell kann ich die Nutzer schonmal verwenden. Das war eigentlich meie Absicht, sonst hätte ich die Benutzer ja mehrfach "anlegen" müssen.

Danke euch!

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13209

gurbelunder schrieb:

Das klingt doch schonmal perfekt. Hab halt auch an Exceptions gedacht, die dann Java wirft. Die kann man ja dann auswerten. Aber generell kann ich die Nutzer schonmal verwenden. Das war eigentlich meie Absicht, sonst hätte ich die Benutzer ja mehrfach "anlegen" müssen.

Bedenke nur, dass das Rollenkonzept der Datenbank u.U. sehr wenig mit dem Rollenkonzept Deiner Anwendung zu tun hat. Die DB wird einem User z.B. Schreibrechte für eine Tabelle mit Benutzerdaten erlauben, aber Deine Anwendung wird sicherstellen wollen, dass jeder Benutzer nur den Datensatz mit seinen eigenen Benutzerdaten ändern darf usw.

Guten Rutsch!

robert

Antworten |