Autor Thema: Recomplie All Java???  (Gelesen 2258 mal)

Offline jr

  • Senior Mitglied
  • ****
  • Beiträge: 260
  • Geschlecht: Männlich
  • Bitte keine eierlegenden Wollmilchsäue...
    • Homepage
Recomplie All Java???
« am: 12.07.06 - 19:04:48 »
Guten Abend,

in der letzten Zeit benutze ich immer häufiger Java anstatt Lotus Script. Das meiste funktioniert auch...  ;D

Ich benutze viel Biblitotheken und wenn ich die Datenbanken ausliefere, dann passiert dies normalerweise ohne ScriptCode. Bei LotusScript funktioniert das mit %INCLUDE seit Jahren. So etwas gibt es aber anscheinend in Java nicht. Kein Problem, ich entwickle mit Eclipse und binde die class-Files ein. Das funktioniert auch, aber (jetzt kommts...): Wenn ich eine Änderung an den Java-Files mache (in Eclipse), dann ändert sich logischerweise auch das class-File. Gibt es eine Möglichkeit, alls Java-Bibliotheken und Agenten neu zu komplieren, wie das bei LotusScript möglich ist? Ansonsten muss ich immer in die jeweiligen Agenten oder Bibliotheken rein, ein EditProject machen, danach einen Refresh um schließlich beim Speichern wieder neu zu kompilieren. Das ist recht aufwändig und geht sicher einfacher.

Übrigens habe ich das auch einmal mit Domiclipse probiert, aber da wird der komplette Sourcecode übertragen, ist also auch nicht das, was ich suche.

Hat jemand eine Idee? Oder wie versteckt Ihr Java-Code in nicht freien Datenbanken? Für Ideen und Vorschläge bin ich offen...

Gruß,

Joachim
Wer in den Fußstapfen eines anderen geht, hinterlässt keine Spuren und kommt nie als Erster an.

Offline jr

  • Senior Mitglied
  • ****
  • Beiträge: 260
  • Geschlecht: Männlich
  • Bitte keine eierlegenden Wollmilchsäue...
    • Homepage
Re: Recomplie All Java???
« Antwort #1 am: 17.07.06 - 10:22:46 »
Hallo,

scheint wohl relativ selten gemacht zu werden!?!?

Nach ettlichen Recherchen habe ich eine interessante Seite gefunden, die das Problem anspricht. Wenn es interessiert, der kann unter

http://lekkimworld.com/lekkimworld/2006/03/26/managing_external_java_dependencies_in_domino_designer.html

einmal nachlesen. Ein Recompile für alles, wird dort aber auch nicht angeboten.

Bleibt wohl nur der Weg über die Script-Bibliotheken.

Gruß.

Joachim
Wer in den Fußstapfen eines anderen geht, hinterlässt keine Spuren und kommt nie als Erster an.

Offline smoki

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
    • Smoki's Lotus Notes
Re: Recomplie All Java???
« Antwort #2 am: 10.08.06 - 09:00:51 »
Hallo!

Meine Java-Projekte mit Notes waren vermutlich nocht nicht so umfangreich, wie deine...

Aber ich ging bei Java davon aus, dass die Classen dynamisch zusammengelinkt werden und ein Recompilieren der Agent nicht notwendig ist.
In meinem kleinen Pilot-Projekt ist das auch definitiv der Fall, aber bei großen Sachen könnte es anders gelagert sein. Daher auch meine Frage! Hast du festgestellt, dass die Agenten neu zu kompilieren sind?

Zu deiner Information im Bezug zum Verbergen des Codes:

Man kann aus einem .class File wieder .java Dateien exthrahieren -> http://www.kpdus.com/jad.html
Dafür gibt es sogar ein Eclipse-Plugin, so dass man .class Files ohne zutun, wieder lesen kann.

Es gibt auch Tools die dabei Helfen, diese Informationen zu schützen. Leider habe ich damit noch nicht herumexperimentiert oder erfahrungen.

Gruesse
Chris

Offline jr

  • Senior Mitglied
  • ****
  • Beiträge: 260
  • Geschlecht: Männlich
  • Bitte keine eierlegenden Wollmilchsäue...
    • Homepage
Re: Recomplie All Java???
« Antwort #3 am: 10.08.06 - 10:27:17 »
Hallo Chris,

es ist schon richtig, dass die Klassen dynamisch zusammengelinkt werden. Aber eben zu dem Zeitpunkt, an dem das jeweilige Objekt gespeichert wurde.

Ich habe eine ganze Anzahl von Klassen, die ich in allen meinen Projekten benutze, meine JRLib  ;). (Das Gleiche habe ich übrigens auch für LotusScript). Diese KLassen sind in allen meinen Datenbanken vorhanden und können direkt benutzt werden. Da gibt es Klassen mit Hilfsfunktionen die man häufig braucht (z. B. split, replaceSubstring, replaceTags, ...)  oder direkte Zugriffe auf meine Konfigurationsdokumente, Evaluierungsklassen, und so weiter. Diese habe ich über Monate und Jahre zusammengetragen und die "leben", will heißen, da kommt immer wieder mal etwas dazu.

Wenn ich eine geänderte Datenbank ausliefere, mache ich einen "Recompile Script" und bin sicher, dass alle LS-Klassen auf dem aktuellen Stand sind. Die Java-Bibliotheken enthalten jetzt die class-Files. Diese werden aber nicht automatisch aktualisiert, sondern sind immer auf dem Stand, in dem Sie gespeichert wurden. Wenn ich jetzt einen neuen Agenten schreiben und auf einen neue Funktion zugreifen will, muss ich zuerst die ScriptLib aktualisieren. Und das geht halt nur manuell: ScriptLib öffnen -> Edit Project -> Refresh All -> Dialog schließen -> Neu Speichern. Das Problem taucht natürlich nur dann auf, wenn man allgemeine Klassen hat, die in mehreren Datenbanken benutzt werden. Wenn Du eine spezielle Klasse für eine Datenbank hast, dann ist mit einer Änderung schon alles erledigt.

Da ich jetzt alle Klassen in einer Bibliothek habe reicht das oben beschriebene Prozedere aus, ansonsten muss dies für jede Bibliothek gemacht werden und das kann recht mühsam sein. Eine andere Möglichkeit habe ich leider nicht gefunden.

Einen Vorteil hat Java in Notes: Mit einem Design-Refresh ist die neue Version in einer anderen Datenbank und kann auch direkt benutzt werden. Bei Lotus Script ist häufig ein Recompile notwendig, wenn sich die Klasse verändert hat, sonst laufen Agenten, die solche Klassen verwenden haben, nicht mehr.

Klar gibt es Decompiler. Wahrscheinlich auch für compilierten LotusScript-Code. Mit genügend krimineller Energie kann man alles bekommen. Mir geht's eigentlich eher darum, dass man nicht so auf die Schnelle an den Code rankommt, da stecken ja schließlich ettliche Mannjahre Arbeit drin... Sicher nur ein kleiner Schutz, aber immer noch besser als nichts. Und außerdem ist der decompilierte Code nur bedingt mit dem Originalcode identisch.

Im Extremfall kopiert sich jemand Deinen Code, meldet ein Patent an und Du muss dann noch Lizenzgebühren bezahlen für Deinen eigenen Code...  :o

Gruß,

Joachim
Wer in den Fußstapfen eines anderen geht, hinterlässt keine Spuren und kommt nie als Erster an.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz