Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

1

21.01.2014, 20:02

Grundsätzliches zur Serverprogrammierung (mit Java)

Hallo Community,

mal eine Allgemeinere Frage:
Welche Vorgehensweise/Richtlinien gibt es bei der Serverprogrammierung in Java. Mit Serverprogrammierung meine ich, dass es beispielweise auf einem vServer bei einem Webhoster laufen können sollte. Das wäre auch schon gleich meine nächste Frage, wie installiert man Programme auf einem (virtuellen) Server. Bieten die Betreiber soetwas wie eine online Kommandozeile, oder wie läuft das Standardmäßig?

Ich will per Http-Post Daten an diesen Server senden können, dort eine kleine Berechnung laufen lassen und dann die Antwort erhalten. Das wäre mit PHP ganz leicht zu machen, ich würde das aber gerne auch mit Java machen, da ich soetwas wie globale Variblen benötige, die die zuletzt empfangenen Daten speichern und ich diese bei PHP dafür in eine Datenbank schreiben müsste, was vermutlich für meinen Zweck zu langsam wäre.

Kennt jemand ein gutes Buch zu dem Thema? Bzw. wie heißt das Thema überhaupt genau? Sockets?

Schönen Gruß,
MitgliedXYZ

Maggot

Frischling

Beiträge: 51

Wohnort: Wien

Beruf: Software Entwickler

  • Private Nachricht senden

2

21.01.2014, 20:16

Auf den VServer kommst du mit einen Programm wie Putty. Dann hast du eine normale Komandozeile :)

Ich würde einen TCP Server schreiben der auf Port 80 hört. Dann kannst du die Anfragen ganz normal hinsenden.

Tankard

Treue Seele

Beiträge: 192

Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft

  • Private Nachricht senden

3

21.01.2014, 20:34

Wenn du nur eine Berechnung auf den Server auslagern willst, dann wäre RMI vielleicht interessant. Ein Kollege hatte das mal fix gemacht, als unsere Socket Verbindung irgendwo ein Problem hatte.

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

4

21.01.2014, 20:52

Und wie komme ich an die POST Werte, bzw. wie sende ich Daten zurück, gibts dafür ein Tutorial, oder ein Buch das sich speziell mit der Serverprogrammierung befasst?

Tankard

Treue Seele

Beiträge: 192

Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft

  • Private Nachricht senden

5

21.01.2014, 22:14

Hatte das mit dem HTTP POST ganz überlesen.

Für HTTP Server die GET und POST verarbeiten gibt es eigentlich einige Beispiele:

Zitat

The working of the code is pretty simple, the HTTP server checks for a GET or POST method, and if its a GET method (line 53) for the home page, it displays the file upload form through which the user can upload the file, in case of any other invalid GET requests other than home page, an error message is displayed (line 65).

Line 70 handles POST request and checks the content type (line 74), POST boundary (line 75), content length (line 81) and the file name (line 98), once these values are parsed, the file is uploaded successfully (lines 108 - 126) provided the file length is 88).

I have commented out some assertions which should be true when parsing the POST request string, but then the code will only work when assertions were enabled (using java -ea HTTPPOSTServer), which in general is not a good practice, therefore if you want to learn more about how HTTP POST requests, add your own assertions while parsing the POST request when you expect something in the request line which should match a particular string.

http://www.prasannatech.net/2008/11/http…ile-upload.html (habe es mir aber nicht genauer angeguckt)

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

6

21.01.2014, 23:57

Müssen es unbedingt HTTP-POST anfragen sein oder würde auch jede andere Art von Anfrage gehen?
Wenn letzteres der Fall ist: RMI wurde ja bereits genannt. Du müsstest lediglich auf Clientseite ebenfalls eine Java-Anwendung mit RMI Verbindung zum Server haben. Ich hatte mir vor einiger Zeit RMI mal ein wenig angeguckt und es wird einem relativ einfach gemacht, dies zu verwenden (allerdings hatte ich es grundsätzlich nur auf dem gleichen Rechner verwendet und den Serverteil nicht auf einen anderen Rechner geschubst, das könnte also noch einen gewissen Unterschied machen.)

Muss es unbedingt ein vServer sein, der im Hintergrund läuft oder könnte es nicht auch der gleiche Rechner bzw. ein anderer lokaler Rechner sein?
Abgesehen davon, dass man sich das Anmieten eines vServers sparen würde, dürfte es weniger umständlich sein, die Software auf den Server zu bekommen und zu gucken, ob alles richtig funktioniert. Da man, abhängig vom Server und was darauf installiert ist, meist auch per Remote Desktop Verbindung bzw. einer vergleichbaren Verbindung auf den Server zugreifen kann, dürfte sich der Vorteil aber auch in Grenzen halten.

Du solltest die globalen Werte nach Möglichkeit auch _wirklich_ extern lagern. Ob es nun eine Datenbank oder eine Datei im Dateisystem ist, ist relativ egal. Es klingt zwar recht einfach, ein paar statische Variablen, ein Singleton oder ähnliches zu implementieren, sauber dürfte aber nichts davon sein.

Und aus Interesse: was willst du denn da berechnen? Und warum soll es Serverseitig laufen? (Abhängig davon sind ggf. die einen oder anderen von mir aufgeführten Dinge mehr oder weniger für dein Vorhaben relevant bzw. geeignet.)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

7

22.01.2014, 20:07

Danke euch schon mal für die Antworten.

Http-Post brauche ich, weil ich auf die Daten/Ausgaben des Servers nicht nur von Java-Anwendungen aus zugreifen will, sondern diese sich so auch leicht in Beispielsweise C# Projekte nutzen lassen. RMI hört sich zwar praktisch an, ist aber etwas ganz was anderes als ich brauche.

Ich will das ganze nicht für ein spezielles Projekt machen, sondern mich interessiert die Serverprogrammierung und das ganze drum herum, also auch wie man die Anwendung auf einen Server bekommt, zum Laufen bringt, etc. Die Kosten für einen vServer wären vernachlässigbar...

Tomcat klingt interessant, aber es ist doch aufwendiger wie ich dachte, vielleicht schaue ich mir doch lieber Asp.Net an, da würden die Server wegen Windowslizensen zwar mehr kosten, aber ich denke ein Webservice ist damit leichter umsetzbar.

8

22.01.2014, 23:40

VServer sind aber nicht billig.

Definiere billig. Es kommt natürlich auf deine Ansprüche an, aber 1,45 € monatlich finde ich nicht teuer.
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

9

23.01.2014, 00:52

HTTP ist doch eine super Idee! Wenn man an HTTP denkt, denkt man gleich auch an REST, das ist auch eine gute Idee.
Java hat eine eigene Spezifikation für RESTful Services. Die Referenzimplementierung ist dazu Jersey. Zusammen mit dem leichtgewichtigen HTTP Server aus Grizzly kann man sich da ganz schnell einen kleinen Webserver zusammenbasteln: https://jersey.java.net/documentation/la…ng-started.html BTW benutze auf jedenfalls sowas wie Maven oder Gradle.

Wenn Du ganz allgemein professionell mit Java arbeiten willst, schau Dir mal folgende Links an:

http://www.gradle.org/
http://maven.apache.org/

http://docs.oracle.com/javaee/7/tutorial/doc/home.htm
http://spring.io/

http://www.eclipse.org/jetty/
http://tomcat.apache.org/
http://www.wildfly.org/

https://grizzly.java.net/
http://netty.io/

http://junit.org/
http://testng.org/
https://code.google.com/p/mockito/
https://code.google.com/p/caliper/

https://code.google.com/p/guava-libraries/
http://www.joda.org/joda-time/
http://square.github.io/dagger/

http://www.eclipse.org/eclipselink/
http://hibernate.org/
http://www.jooq.org/
http://flywaydb.org/

http://infinispan.org/
http://www.hazelcast.com/

http://www.mapdb.org/
http://www.h2database.com/

https://www.heroku.com/
https://www.appfog.com/
https://developers.google.com/appengine/docs/

Wenn Dich ein bestimmtes Thema genauer interessiert, kannst Du mir auch gerne eine PM schicken oder hier nachfragen. So ganz allgemein gibt es abertausend Dinge die interessant sind. Wenn Du Dich mit C#/WCF besser auskennst, dann ist das auch empfehlenswert. Ich persönlich mag Java und das Java Ökosystem lieber.

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

10

23.01.2014, 15:25

Danke für deine Linkssammlung, so etwas wie in den Jersey Beispielen gezeigt wird, wollte ich umsetzen, ich denke dass ist also der Richtige Einstieg für mich. Ich werde jetzt dann die Jersey-Einstiegsdokumentation mal durchlesen. Ich hoffe ich habe dich richtig verstanden, dass Http eine gute Idee ist und du meintest das nicht ironisch. Ich finde aber das es ein interessantes Gebiet ist, was viele Einsatzmöglichkeiten bietet.

Bisher habe ich VisualStudio und C# bevorzugt, aber die Preise für WindowsServer sind ja doch ziemlich abschreckend, im Vergleich zur Linuxwelt. Wie in dem Link von Steef sieht man ja, dass micro Linux Server selbst für Schüler zum lernen durchaus bezahlbar sind.


Wenn ich mir die Links so durchschaue sieht aber auch die Google AppEngine gut aus, vor allem ist die Dokumentation gut verständlich.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »MitgliedXYZ« (23.01.2014, 15:31)


Werbeanzeige