JVM und Android

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

JVM und Android

Beitrag von theo »

Verwendet jemand von euch das JVM Target von FPC oder Lazarus für die Android Entwicklung?

Wie sind eure Erfahrungen?

Ich selber werde bisher nicht richtig warm mit der Idee "Java Zeug" mit Lazarus FPC machen zu wollen.
Geht es euch auch so, oder könnt ihr Vorteile aufzeigen gegenüber der Verwendung von Eclipse oder Netbeans für solche Sachen?

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: JVM und Android

Beitrag von Socke »

theo hat geschrieben:Wie sind eure Erfahrungen?

Ich habe das vor einiger Zeit mal angetestet. Für mich sieht das ganze ein wenig seltsam aus. Geht/ging mir da so ähnlich wie dir.

theo hat geschrieben:Ich selber werde bisher nicht richtig warm mit der Idee "Java Zeug" mit Lazarus FPC machen zu wollen.
Geht es euch auch so, oder könnt ihr Vorteile aufzeigen gegenüber der Verwendung von Eclipse oder Netbeans für solche Sachen?

Vorteil:
  • Man kann die gewohnte Sprache Pascal verwenden
Nachteile:
  • Kein GUI-Designer
  • Keine brauchbare Projektverwaltung. Lazarus beschränkt sich auf den Quelltext bzw. arbeitet auf Dateieben; bei Android braucht man für ein Lauffähiges Programm aber wesentlich mehr Dateien, die man mit entsprechenden IDEs komfortabel organisieren und bearbeiten kann (Meta- oder Beschreibungsdateien).
  • Beispiel-Code muss erst nach Pascal umgesetzt werden
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: JVM und Android

Beitrag von theo »

Danke für die Antwort.

Socke hat geschrieben:Nachteile:
[list][*]Kein GUI-Designer


Man muss unterscheiden. Es gibt ja afaik mindestens zwei total verschiedene Ansätze.

Erste Variante: FPC kennt das Target JVM. D.h. "hinten" kommen Java Class Files raus.

Die RTL dazu liest sich etwas so:

Code: Alles auswählen

   47   JLMath = class sealed external 'java.lang' name 'Math' (JLObject)
   48   public
   49     const
   50       E = jdouble(2.718281828459045);
   51       PI = jdouble(3.141592653589793);
   52   public
   53     class function sin(para1: jdouble): jdouble; static; overload;
   54     class function cos(para1: jdouble): jdouble; static; overload;
   55     class function tan(para1: jdouble): jdouble; static; overload;
   56     class function asin(para1: jdouble): jdouble; static; overload;


Da sehe ich im Moment nur ein "akademisches Interesse". Warum soll man das als Pascaler verwenden, wenn noch nicht mal eine TStringList da ist?
Ich meine, wenn man sowieso die "fremde" Klassenbibliothek verwenden muss, dann lieber gleich Java.

Die zweite Variante ist die, dass Lazarus eine für ARM kompilierte Shared Library erzeugt, welche von Java gewrappt wird und so als App fungiert.
Dazu gibt es den normalen Formulardesigner. Nachteil: Das geht nur mit dem Widget Type "customdrawn", also etwas systemfremd.

Mich überzeugen beide nicht.
(Bitte allfällige Missverständisse korrigieren!)
Dateianhänge
androidlaz.png

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: JVM und Android

Beitrag von theo »

Ich entnehme der schwachen Beteiligung an dieser Diskussion, dass niemand wirklich hinter der Idee FPC/Lazarus für Java /Android steht.
Richtig?

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: JVM und Android

Beitrag von Christian »

Ich hab noch kein lauffähiges Programm damit hinbekommen find die Idee aber Reizvoll.
Man kann eine Bibliothek für alle Plattformen verwenden und hat auch nur eine zu testen u.s.w. allein schon wenn man sich bei Android und iOS Apps nur noch um die unterschiedliche Benutzerschnittstelle kümmern muss find ich das schick.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: JVM und Android

Beitrag von theo »

Christian hat geschrieben:Ich hab noch kein lauffähiges Programm damit hinbekommen find die Idee aber Reizvoll.


Die Variante FPC Target JVM habe ich hinbekommen, aber die reizt mich nicht. LCL Android klappt bei mir nur mit dem alten Virtualbox Snapshot.
Eigene Versuche mit neuerem FPC/Lazarus sind bei mir insofern fehlgeschlagen, dass die App auf dem Emulator beim Start abkackt.
Gut, ich habe nicht alle Energie da reingesteckt, ist auch eine bisschen wackelig das Ganze.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: JVM und Android

Beitrag von Christian »

Und ich dacht schon es liegt an mir. Ist hier das selbe.
Ich find die Variante mit JVM aber reizvoller, die variante mit nativem Code ist immer vom prozessor abhängig und ich denke das ist dem Nutzer auf Android schlecht vermittelbar bzw man muss viel mehr Aufwand treiben um alle Telefone und Tablets zu unterstützen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: JVM und Android

Beitrag von theo »

Christian hat geschrieben:Ich find die Variante mit JVM aber reizvoller,


Naja, aber damit kann man auch nicht normal arbeiten. Wenn ich solchen Code schreiben will, dann nehme ich gleich Java:

Code: Alles auswählen

 
program sort;
 
{$mode delphi}
{$modeswitch unicodestrings}
 
uses
  {$ifdef java}jdk15{$else}androidr14{$endif};
 
function test : string;
var
 sa : array of JLObject;
 L : JUList;
 i : integer;
begin
 SetLength(sa, 3);
 sa[0] := JLString(string('2'));
 sa[1] := JLString(string('3'));
 sa[2] := JLString(string('1'));
 L := JUArrays.asList(sa);
 JUCollections.sort(L);
 
 Result := '';
 for i := 0 to L.size() - 1 do
   Result := Result + string(L.get(i)) + string(' ');
end;
 
begin
  jlsystem.fout.println(test);
  if test<>'1 2 3 ' then
    raise JLException.create;
end.


http://svn.freepascal.org/svn/fpc/branc ... /test/jvm/

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: JVM und Android

Beitrag von Scotty »

theo hat geschrieben:Ich entnehme der schwachen Beteiligung an dieser Diskussion, dass niemand wirklich hinter der Idee FPC/Lazarus für Java /Android steht.
Richtig?

Ich habe es geplant und lese interessiert mit. Customdrawn muss auf Android nicht unbedingt negativ auffallen, da die GUI neuer und weniger standardisiert ist.

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Re: JVM und Android

Beitrag von khh »

Christian >> Ich hab noch kein lauffähiges Programm damit hinbekommen find die Idee aber Reizvoll.

ich erinnere mich schwach :shock:

Vieleicht kriegst du es bis zum nächsten Treffen hin ;-)


Bis dahin bleib ich bei Eclipse :D

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: JVM und Android

Beitrag von mschnell »

Ich interessiere mich aus anderen Gründen für "Custom Drawn". Leider habe ich die SVN-Version noch nie ans Laufen bekommen. Nachdem ich nach meinen ersten Versuchen einen Patch an die "Macher" gegeben habt, kann ich immerhin eine Application mit einem leeren Formular laufen lassen. Sobald ich aber irgendeine Komponente darauf platziert habe, kann ich das Projekt übersetzen, aber bei der Ausführung bekomme ich einen Range-Check Fehler (vor meinem Patch war das auch bei leerem Formular der Fall.

Ich habe mir den Code angeschaut und es ist tatsächlich ein Bug: z.B. wird bei einem Integer das Bit 31 anders als als Voreichen verwendet. (z.B. werden Handle, die bei Linux eigentlich Pounbter sind, in Integer Variablen gehalten). Mit Cardinal würde das ohne Range Check Fehler funktionieren.

Anscheinend testen die mit abgeschaltetem Range check. Finde ich weniger toll.

-Michael

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: JVM und Android

Beitrag von theo »

mschnell hat geschrieben:Ich interessiere mich aus anderen Gründen für "Custom Drawn". Leider habe ich die SVN-Version noch nie ans Laufen bekommen.


Bei mir läuft das.
Dateianhänge
cdrawn.png

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: JVM und Android

Beitrag von mschnell »

Toll !

Danke für die Mitteilung.

Ich bekomme nicht heraus, warum es bei mir anders ist als bei allen anderen. Liegt das vielleicht an SUSE 32 Bit ?

Da ich die Fehler eindeutig sehen kann und der Range-Check-Error tatsächlich berechtigt ist, ist die einzige Möglichkeit, dass bei9 mir die Daten (vermutlich die Werte der Handles) anders sind oder dass nur bei mir die Rangecheck-Überprüfung eingeschaltet ist.

Wenn ich wieder im Büro bin, schicke ich Dir einen Bericht, wo da was schiefgeht.

Gruß und Dank,
-Michael

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: JVM und Android

Beitrag von Christian »

@khh ich bin gerade dabei mit html5 doch etwas wärmer zu werden. Man muss auf den mobilen Browsern einiges beachten dann lassen sich aber durchaus plattfomunabhängige programme mit schreiben. Fängt mir gerad an zu gefallen... mal sehn.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Soner
Beiträge: 623
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: JVM und Android

Beitrag von Soner »

Ich habe alle drei Varianten getestet und funktioniert bei mir gut (Samsung Glaxy Y, Android 2.35):
-LCLTest funktioniert wunderbar, Vorteil ist mann kann das Programm komplett auf PC-Entwickeln, testen, debuggen. Für Android braucht man nur kleine Anpassungen (Tasten..) vornehmen.
-Native Android GUI von Felipe (SchachChess) verwendet Android-Gui das ist schonmal vorteil. Nachteil ist Testen ist wahrscheinlich nicht so einfach.
-ZenGL für Grafik/Spiele sehr gut wie bei LCLTest kann mann komplett für"s PC entwickeln wenn es fertig ist anschließend für Android kompilieren.
Nachteile kann ich noch nicht nennen weil ich die mitgelieferten Beispielprogramme gestestet habe. Momentan exprementiere ich mit ZenGL and LCL sagt mir auch zu.

Ich habe auch mit Java+Eclipse einige Beispiele und Tutorials gemacht. Es bringt nicht viel Spaß weil der Entwicklungsprozeß zu langsam ist. Emulatorstart ist Langsam, Eclipse ist Zumutung. Vielleicht braucht man einfach einen High-End Rechner. Mit meinen 1.7GHZ, 1GBRam Maschinen macht es überhaupt nicht Spaß.

Für irgendwelche einfache Rechnenprogramme wie Taschenrechner, Zinsrechner oder Nachschlagewerke wie Mathelexikon würde ich einfache HTML und Javascript verwenden. Man muß das nicht mal als Apk-Packen. Mann kan einfach alles in ein Ordner werfen und ein Verknüpfung von Index.html-Datei auf Desktop (Home-Bildschirm) erstellen.

Antworten