Java Objekte zwischen Webserver und Android App austauschen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von oetzi, 08.10.2011.

  1. oetzi, 08.10.2011 #1
    oetzi

    oetzi Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    148
    Erhaltene Danke:
    8
    Registriert seit:
    25.02.2011
    Phone:
    Samsung Galaxy S5+
    Hallo zusammen,

    ich habe es jetzt endlich hingekriegt von meiner App einen Request an meinen Webserver zu schicken, dort einen String abzuholen und den auszugeben. Erledige das ganze über HttpClient, HttpGet und HttpResponse Objekte.

    Der nächste Schritt ist jetzt, dass ich natürlich ganze Java Objekte holen möchte. Jetzt frage ich mich gerade, wie man das mit Android am sinnvollsten macht.
    Bringt Android zufällig irgendeine Technik dafür mit?
    Oder nutzt man üblicherweise JSON dafür?
    Oder gibt es sonst irgendwas sinnvolles?

    Ich bin für alle Tipps dankbar.

    Schönen Gruß,
    oetzi
     
  2. sixi, 08.10.2011 #2
    sixi

    sixi Erfahrener Benutzer

    Beiträge:
    237
    Erhaltene Danke:
    64
    Registriert seit:
    20.01.2009
    Gibt afaik nichts vorgegebenes, sondern ist dir überlassen, was du nutzt. WebServices sind da denk ich relativ üblich, egal ob klassische SOAP oder über JSON. Da kannst du entweder auf Bibliotheken zurückgreifen (z.b. kSoap) - oder dir selbst schreiben.

    Auch möglich ist das direkte nutzen von XML<->Java Parsern wie JAX-B - allerdings würde ich dir aus Performancegründen davon abraten, selbstgeschriebene XML Parser sind hier wesentlich Performanter!
     
  3. oetzi, 08.10.2011 #3
    oetzi

    oetzi Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    148
    Erhaltene Danke:
    8
    Registriert seit:
    25.02.2011
    Phone:
    Samsung Galaxy S5+
    Hallo Sixi,

    danke für die Info.
    Dann werde ich es wohl mal mit JSON probieren. Da wollte ich mich sowieso mal reinarbeiten.
    Hast du da zufällig auch noch einen heißen Tipp für mich? Gibt es da zufällig auch gute Bibliotheken, die einen unterstützen?
     
  4. Fr4gg0r, 08.10.2011 #4
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Protobuf?
     
  5. oetzi, 09.10.2011 #5
    oetzi

    oetzi Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    148
    Erhaltene Danke:
    8
    Registriert seit:
    25.02.2011
    Phone:
    Samsung Galaxy S5+
    mhh, Protobuf sieht mir auf Anhieb so aus, als müsste man sich hier wieder in eine neue Technik einarbeiten.
    Warum empfiehlst du es denn? Was sind die Vorteile aus deiner Sicht?
     
  6. ko5tik, 09.10.2011 #6
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Ich nutze pico web remoting on serverseite ( CXF wäre auch denkbar ) die JSON ausliefert. Auf dem Gerät nehme ich GSON als Pull-Parser, und eigene Databindingbibliothek:

    https://github.com/ko5tik/jsonserializer

    (ist mittlerweile auf maven central)
     
  7. Fr4gg0r, 09.10.2011 #7
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    protobuf hat weniger overhead als json (zumindest bei der Datenübertragung^^).

    Google nutzt das für den android market und vermutlich auch alle anderen services die auf dem
    android laufen.
     
  8. oetzi, 09.10.2011 #8
    oetzi

    oetzi Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    148
    Erhaltene Danke:
    8
    Registriert seit:
    25.02.2011
    Phone:
    Samsung Galaxy S5+
    Ich habe mir eben GSON angeguckt. Das scheint eine sehr simple Bibliothek zum Thema zu sein.
    Mir geht es jetzt am Anfang nicht sofort um maximale Performance bzw. minimale Größe, etc. :)
     
  9. ko5tik, 09.10.2011 #9
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    im Android eingebauter JSON parser funktioniert wie DOM - also, baut komplette baum auf im Speicher. Für kleine Datenmengen geht es, aber wenn es großer wird leidet Perfromance enorm. GSON bietet pull-modell , also weniger Speicherverbrauch und eingebaute Bindungsschicht. Ist aleerdings etwas zu groß für meinen Geschmack.

    Deswegen verwende ich abgespeckt Version von GSON (nur parsing, etwa 16K ) und eigene Databinding
     
  10. oetzi, 09.10.2011 #10
    oetzi

    oetzi Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    148
    Erhaltene Danke:
    8
    Registriert seit:
    25.02.2011
    Phone:
    Samsung Galaxy S5+
    Mal ne ganz blöde Frage: Wo packe ich so extra libs hin? :)
    Die von Eclipse erstellte Android Projektstruktur hat kein lib Verzeichnis und da die Struktur bei Android ja recht stark vorgegeben ist, gehe ich mal von aus, dass ich mir das nicht aussuchen darf oder?

    @ko5tik:
    Wie heißt denn diese abgespeckte Version von GSON?
    Und verstehe ich das richtig, die kann dann "nur" JSON in Java Objekte umwandeln?
     
  11. Fr4gg0r, 09.10.2011 #11
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    völlig banane.
    Nur nicht in den res/ order assets/ Ordner.
     
  12. oetzi, 09.10.2011 #12
    oetzi

    oetzi Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    148
    Erhaltene Danke:
    8
    Registriert seit:
    25.02.2011
    Phone:
    Samsung Galaxy S5+
    oh okay, danke :)
     
  13. ko5tik, 10.10.2011 #13
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    GSON bietet ein extra-Download - schau mal nach dem kleinsten auf deren Download seite. Es parst nut JSON und sonst nichts. GSON bietet auch eigene Databinding, die erlaubt aus JSON-Stream Java Objekte automatich zu erzeugen. (mir ist dierse aber zu groß und zu kompliziert, deswegen eigene Lib)
     
  14. the_alien, 10.10.2011 #14
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Wie schnell ist denn deine Lib im Vergleich zu Jackson?
     
  15. ko5tik, 10.10.2011 #15
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Habe ich nicht direkt verglichen, aber jackson ist das schnellste im JSON-Bereich. Da ich aber GSON pull parser benutze, bin ich nicht weit davon enfernt. Es ist auf alle fälle schneller wie eingebaute JSON parser

    Jackson ist allerdings etwas zu groß für Android-Entwicklung, und ich war noch nicht in der lage Tatu dazu zu bewegen eine abgespeckte Version zu erstellen.

    Von der Geschwindigkeit kannst du dich überzeugen wenn du mein OCR-Auflader ausprobierst - es lädt und parst etwa 200K JSON-Daten bei dem Start
     
  16. the_alien, 10.10.2011 #16
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Joa, 900kb nur an JSON libs ist natürlich eine Ansage. Aber bisher bin ich ehrlich gesagt relativ zufrieden mit der Geschwindigkeit und darum hab ich es mal in kauf genommen.
    Allerdings ist unsere App trotz 900kb Jackson libs, Greendroid, ActionBar Sherlock und unserem Kram inklusive Bilder nur 950kb groß. Wie auch immer Android das macht...

    Deinen OCR-Auflader probiere ich mal aus. Auch wenn ich ihn nicht brauche ;)
     
  17. ko5tik, 10.10.2011 #17
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Nimm lieber Wahlhilfe-App , Prepaid-Auflader wird nur bestimmte Anzahl der Ziffern akzeptieren ( Je nach Netzwerk )
     

Diese Seite empfehlen