Datenübertragung über Netzwerk

melmager

Erfahrenes Mitglied
Es geht darum das ich Daten von Android übers Netzwerk zu einem PC übertragen möchte.

nachdem ich micht etwas eingegoogelt habe lande ich bei "rest".
Auf Android seite also ein Rest Client der Daten hübsch in Json verpackt übermittelt.

Machbar :)

Auf der andren Seite benötige ich ich einen Http Server der die Rest Funkion anbietet.
Json auspackt und verarbeitet. Etwas viel Aufwand finde ich :(

Offensichtlich gibt es zwar in Java 7 einen kleinen Http Server, den man nutzen kann.
Bevor ich mich aber weiter einlese wie ich den Server dazu bekomme rest und json zu verarbeiten, hier meine Frage, da mir die Serverseite etwas gross erscheint (als Programmieraufwand):

Gibt es eine Java Netzwerk Daten Übertragung die unter der komplexitität von Rest liegt ?

Oder darf/muss ich sowas selber schreiben ? Und bei Ports und TCP einsteigen ?

Zusatzfrage auch der Webserver in java macht gebrauch von annotation ( kann man die technik auch selber programmieren und in eigene Projekte einsetzen - wenn ja wo kann man sich mal einlesen ?

PS: jax-WS ist nach meiner meinung noch grösser/komplexer wie "rest" :)
 
Zuletzt bearbeitet:

sheel

I love Asm
Hi

man muss nicht Json als Datenformat nehmen.

Jedenfalls, ob Sockets, HTTP, RMI oder sonst irgendwas am sinnvollsten ist hängt vom Fall ab.
Was wird denn hier warum übertragen? Ist der Server wirklich als Server mit mehreren Clients gedacht, oder soll es 1:1 - Kommunikation werden? Sollen in Zukunft evt. auch Nicht-Java-Programme mitmachen können? ...

Falls es dann wirklich HTTP wird kann ich NanoHTTPD empfehlen; hab dazu auch einige Codeschnippsel.
 

melmager

Erfahrenes Mitglied
RMI fällt leider aus das kann Android nicht.
Naja es ist eine Datenerfassungs App , mit Datenbank mit 2-3 Tabellen und wenn man im heimischen Netz ist sollen die erfassten Daten auf die Serverdatenbank abgelegt werden. Auf die greifen dann 2 Arbeitplatzrechner zu - ich bevorzuge hier auch Java - kann aber auch PHP sein - aber nur wenn ich eh ein Http server brauche :)
Ich schätze mal als Datenmenge so um die 4kb - ist alles Textbasiert.

Und auf Json bin ich gekommen da ich ein Beispiel für Android gesehen habe - war recht kurzes stück Code.

Narürlich ginge auch CSV - da ja der Inhalt einer Datenbank übertragen werden soll

Im Moment scheue ich vor dem Aufwand auf der Serverseite zurück :)

und nein es muss nicht http sein -
 
Zuletzt bearbeitet:

sheel

I love Asm
RMI fällt leider aus das kann Android nicht.
Es würde Zusatzlibs zum Nachrüsten geben.

Also, das mit puren Sockets selber zu machen (und zwar richtig, unter Beachtung aller Probleme) ist definitiv der meiste Aufwand

Zwischen PHP und NanoHTTPd würd ich eher zu PHP gehen... DB-Zugriff in PHP ist ziemlich einfach, auch das letzte bisschen Serverhandling wird einem abgenommen, usw.
 

melmager

Erfahrenes Mitglied
Jetzt habe ich mich mal wieder verlaufen :(

mittlerweile bin ich bei WebSockets gelandet - und diverse implementation

Scheinbar gibt es bei Java EE sowas ...
Oder Projekt Tyrus - beide Setzen auf Glassfish auf - also wider ein Server :(

SOAP = Nutzt XML als Datenübertragung
Rest = Nutzt HTTP technik
WebSockets = Bidirektionale Verbindung, also mehr wie unter Http möglich

Aber alle nutzen einen Server wo die Technik eingebunden werden muss

und ob chemistry mit Android Content Provider zusammenarbeitet - keine positv Meldung gefunden

Welches Buch führt eine in EE und Konsorten ein - also Insel plus :)

Unter andrem möchte ich verstehen wo der Unterschied zwischen Glassfish und Tomcat ist
Warum alle Welt Maven nutzt und so weiter ...
 
Zuletzt bearbeitet:

sheel

I love Asm
Ich muss wohl fragen, warum du dir es so umständlich machst.
Offensichtlich ist JEE neu für dich, also...

Wenn es unbedingt Java sein muss, und wirklich nur "Server zum DB-Eintragen" ist, ist das ganze Zeug Overkill.

Jedenfalls, JEE besteht aus einigen Teilen, von denen Tomcat nur ein paar hat, Glassfish aber alle.
Siehe auch https://de.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition#Implementierungen

Soap und Rest sind nicht vergleichbar, und schon gar nicht Gegensätze.

Warum Maven von irgendwem benutzt wird ist mir auch ein Rätsel :D
Maven ist ein Buildmanagement-Tool. Makefiles, automatischer Download von Libraries die man im Programm braucht usw.usw. Wenns nach der Einlernphase funktioniert, schön, wenns nicht funktioniert wird man von der Komplexität erschlagen bevor man den Fehler findet. An Alternativen gibts a) Ant, das nicht so viel kann, aber deutlich einfacher zu durchschauen ist, b) Gradle, dass ich noch nie versucht habe, aber angeblich auch nicht so erschlagend sein soll.
 

melmager

Erfahrenes Mitglied
Wenn es unbedingt Java sein muss, und wirklich nur "Server zum DB-Eintragen" ist, ist das ganze Zeug Overkill.

Warum Maven von irgendwem benutzt wird ist mir auch ein Rätsel :D

Sehe ich auch so mit dem Overkill - Ein Server (Rest/Soap/usw ) hinzustellen für son Kleinkram ist "too much" :confused:

Mittlerweile bin ich auf XML-RPC gestossen. das ist klein und scheinbar der Vater von Soap.
jedenfalls steht in der beschreibung das man den Server in der Java Anwendung hinbekommt.

Auf der Androidseite gibts auch entsprechende Client Software.

Und mittlerweile habe ich gelernt das der Begriff "ContentProvider" meint ich übertrage Daten innerhalb vom Androidsystem - da ist meine Aufgabe den xml-rpc client zum Contentprovider zu machen und somit nach aussen zu gehen.

Sprich ich bin die nächsten tagen beschäftigt das mal zu testen - wenn ich weiss wie es geht mache ich ein Tutorial :rolleyes:

oder mache rückfragen :p
 

Bratkartoffel

gebratene Kartoffel
Premium-User

melmager

Erfahrenes Mitglied
Nachdem ich diverse möglichkeiten durchgegangen bin
werde ich Protocol Buffer und Jetty einsetzen

inspirationsquelle: http://javahonk.com/google-protocol-buffer-jetty-web-server-integration/

Jetty finde ich beim ersten draufschauen einfacher wie der Websever "com.sun.net.httpserver"

erste unterscheidung : den von Sun muss man die IP mitgeben (die übrigends mit Java unter Linux nicht so einfach raus zufinden ist) - dazu musste ich erstmal ne classe schreiben - Ursprungscode natürlich gefunden in einem Forum ...

wenns geht und ich halbwegs verstanden habe wie versprochen hier Tutorial :)
 
Zuletzt bearbeitet: