Java nach PHP portieren - Alternativen?
lima-city → Forum → Programmiersprachen → Java
anbieter
anfrage
apache
beachten
bereich
bezug
ende
erfahrung
frage
laufen
monat
paar
programm
protokoll
server
sitzung
sprache
stunden
url
verbindung
-
N'Abend Allerseits.
Ich hatte bis vor kuzem einen Server ( geschrieben in Java ) auf meinem PI laufen, der unter anderem für die Kommunikation zwischen mir und Kumpels fungierte. In letzter Zeit versucht jedoch eine dritte Person sich den Zugriff auf den PI zu verschaffen. Ich weiß nicht was er/sie sich davon verspricht aber mir ist es langsam trozdem ungeheuer. Ich habe zwar die IP('s) auf die Blacklist gesetzt aber er/sie läßt sich davon nicht abhalten und besorgt sich neue.
Nun kann mir der Gedanke den "Server" nach PHP zu portieren. Dazu auch gleich einige Fragen, die mir als erstes in den Kopf schießen.
1. Umsetzbarkeit vs. dafür investierte Zeit
In bin kein "Neuling" was das Programmieren angeht, aber mit PHP hatte ich bisher nicht viel am Hut. Wie groß ( schätzungsweise ) wäre der Aufwand die Sprache zu erlernen? Ich wäre grundsätzlich nicht abgeneigt neue Sprache zu erlernen, wenn sie mir auch in der Zukunft gewisse Vorteile bieten würde.
2. Wie ist mit Kompatibilität?
Dem Client müsste es doch egal sein in welcher Sprache der Server geschrieben ist. Oder habe ich was übersehen?
3. Auf dezentralisiertes Netzwerk erweitern.
Dafür müsste ich zwar trotzdem in PHP einen Server schreiben aber der würde dann lediglich als ein Adressbuch fungieren.
Hat jmd. schon mal Erfahrungen mit beiden Sprachen machen können?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Die Frage die eher im Raum steht: Was versprichst du dir davon den Server in einer anderen Programmiersprache zu schreiben? Das Grundproblem, dass jemand sich drauf einloggen will löst das ja nicht.
1) Kann man schlecht sagen, das hängt natürlich entsprechend deiner Zielsetzung ab und ggf. Vorkenntnissen.
2) Ist es.
3) Siehe oben. Es bringt dir nix, wenn du eh einen Single Point of Failure hast. -
Was ich vorhabe - ist die Trennung meines privaten Internetanschlußes. Soll heißen, ich will meinen Router wieder komplett dicht machen. Es geht auch in erster Linie nicht um die Sicherheit des Servers, die ist durchaus gegeben. Auf dem PI laufen außerdem noch diverse weitere Dienste und in den LOG files ist kein Angriff auf den Server zu verzeichnen.
Der Server ist "groß" und entstand im Laufe einiger Monate und wurde nicht "mal eben in ein paar Stunden" geschrieben. Er bietet eigenes Protokoll an und hat auch gewisse Sicherheitsmaßnahmen, wie Brute Force protection etc., sodass ich auf der Seite erstmal sicher bin.
Was ich mir davon verspreche, ist bessere Wartbarkeit/Installation bzw. Verfügbarkeit. Ein in PHP geschriebener Server würde nahezu auf allen Webhoster laufen. Für Java dagegen müsste ich auf einen vServer zurückgreifen. Die sind jedoch teurer. Hätte ich wahrscheinlich diesem Aspekt bei der Plannung mehr Beachtung schenken sollen.
SPOF kann ich nicht nachvollziehen. Im jetztigen Zustand ja - aber wenn ich eben auf dez. Modell zurückgreife, dann würde lediglich der Server auf der PHP Seite ausfallen und die ( bereits verbundene ) Clients würden weiter untereinander sich austauschen können.
Zum Thema Erfahrung. Stufe mich selbst als "fortgeschrittener User". Ich arbeite in Bereich der Softwareentwicklung mit Java und C++ ( sehr stark objektorientiert ).
Ist PHP erst ab V5 OOP? Könnte mich schwer mit prozeduraler Programmierung anfreunden. -
b33st schrieb:
Der Server ist "groß" und entstand im Laufe einiger Monate und wurde nicht "mal eben in ein paar Stunden" geschrieben. Er bietet eigenes Protokoll an und hat auch gewisse Sicherheitsmaßnahmen, wie Brute Force protection etc., sodass ich auf der Seite erstmal sicher bin.
Da du dich auskennst, solltest du doch schon schneller wieder einen Server programmiert haben. Wenn es aber wirklich ein so umfangreiches Softwarepaket ist, dauert es natürlich dementsprechend länger.
b33st schrieb:
Zum Thema Erfahrung. Stufe mich selbst als "fortgeschrittener User". Ich arbeite in Bereich der Softwareentwicklung mit Java und C++ ( sehr stark objektorientiert ).
Ist PHP erst ab V5 OOP? Könnte mich schwer mit prozeduraler Programmierung anfreunden.
Prozedural musst du nicht programmieren, denn mittlerweile solltest du bei keinem Anbieter mehr eine so veraltete PHP-Version finden, dass OOP nicht möglich ist. Allerdings ist PHP-Objektorientiert doch noch etwas anderes als Java/C++-Objektorientiert und man muss sich erst ein bisschen umgewöhnen.
mfg
Jonas -
jonas-bayer schrieb:
b33st schrieb:
Der Server ist "groß" und entstand im Laufe einiger Monate und wurde nicht "mal eben in ein paar Stunden" geschrieben. Er bietet eigenes Protokoll an und hat auch gewisse Sicherheitsmaßnahmen, wie Brute Force protection etc., sodass ich auf der Seite erstmal sicher bin.
Da du dich auskennst, solltest du doch schon schneller wieder einen Server programmiert haben. Wenn es aber wirklich ein so umfangreiches Softwarepaket ist, dauert es natürlich dementsprechend länger.
[ ... ]
Auskennen - ja, schnell "nachprogrammieren" - ja, aber eben in Java oder C++ und nicht mit der Sprache, mit der ich zuvor nicht in Berührung kam.
Auf den ersten Blick fällt mir sofort ein, das Variablen keine Typangabe benötigen, was mich total verwirrt. Aber zumindest ist eine gewisse Ähnlichkeit mit C/C++ vorhanden. -
Richtig, PHP kennt so keine wirkliche Typisierung. Für dich der wohl wichtigste Unterschied: PHP ist nicht dafür gedacht dauerhaft zu laufen. Du wirst also früher oder später merken, dass dein Skript ggf. vom Webserver gekillt wird.
PHP4 kann man vernachlässigen. 5 ist immerhin schon über 10 Jahre alt. -
zu 1. Umsetzbarkeit:
Prinzipiell möglich, ohne starke Änderungen am Client jedoch nicht:
Während du in Java wahrscheinlich mit dem ServerSocket arbeitest, auf Verbindungen wartest und dann ggf. für die neue Sitzung einen neuen Thread startest kannst du das alles in PHP nicht.
Da kommt über den Webserver (Apache o.ä.) eine Anfrage rein, wodurch in deinem Fall ein PHP-Skript interpretiert wird welches eine Textausgabe erzeugt die dann zum Client zurückgeschickt wird. Ende.
Sitzungen sind möglich, aber komplizierter als in Java; eventuelle Datenbanken kannst du vermutlich weiternutzen (je nach Hoster), siehe http://php.net/manual/en/refs.database.vendors.php.
2. Kompatibilität: siehe 1. - Dein Server in Java unterscheidet sich fundamental von Webservern.
3. dezentralisiertes Netzwerk: Das ist einfach und möglich, da nur noch das Adressbuch auf dem Server läuft. Was die Clients untereinander dann machen ist ja egal.
Solltest halt nicht vergessen das Adressbuch entsprechend zu schützen.
Hat leider nur den Nachteil dass beide Kommunikationspartner online sein müssen.
Das umgewöhnen von Java/C++ zu PHP ist relativ einfach, aber du wirst die schwache Typisierung von PHP hassen (gerade bei sicherheitskritischen Dingen gefährlich, weil PHP dann oft automagisch irgendwas aus der Variable macht anstatt aufzuhören), zusätzlich zu der Tatsache dass PHP nicht kompiliert wird und du deswegen fehlende Semikolons und ähnlichen Kleinkram erst später bemerkst.
Da du ja deinen Router wieder dicht machen willst würd' ich dir die Dezentralisierung empfehlen.
Warum brauchte es überhaupt einen eigenen Server? Bietet der die Möglichkeit verschlüsselter Kommunikation? Wenn's nur das ist ist PGP auch eine Lösung... -
b33st schrieb:
Sobald deine Software komplex genug ist, wirst du sowieso auf vServer/Cloud-Instanzen zurückgreifen müssen. Außerdem gibt es auch noch PaaS-Anbieter wie z.B. Google, die dir eine Java-Platform auf Zeit vermieten, genau so wie du anderswo PHP-Webspace bekommst.
Was ich mir davon verspreche, ist bessere Wartbarkeit/Installation bzw. Verfügbarkeit. Ein in PHP geschriebener Server würde nahezu auf allen Webhoster laufen. Für Java dagegen müsste ich auf einen vServer zurückgreifen. Die sind jedoch teurer. Hätte ich wahrscheinlich diesem Aspekt bei der Plannung mehr Beachtung schenken sollen.
Wartbarkeit: seit wann ist PHP wartbarer als Java? Man hört eher, dass das Gegenteil der Fall sein soll.
ikatools schrieb:
Falsch. PHP allein hat erstmal überhaupt nichts mit Webservern zu tun. PHP-Anwendungen können durchaus eigenständig, und nicht auf Webserver angewiesen sein. PHP unterstützt auch, falls man das aktiviert hat, die Erstellung von (Server)Sockets sowie Threads, Prozessen usw. Auf den meisten Webservern wie z.B. auch auf lima-city ist das allerdings aus Sicherheitsgründen deaktiviert.
Prinzipiell möglich, ohne starke Änderungen am Client jedoch nicht:
Während du in Java wahrscheinlich mit dem ServerSocket arbeitest, auf Verbindungen wartest und dann ggf. für die neue Sitzung einen neuen Thread startest kannst du das alles in PHP nicht.
Da kommt über den Webserver (Apache o.ä.) eine Anfrage rein, wodurch in deinem Fall ein PHP-Skript interpretiert wird welches eine Textausgabe erzeugt die dann zum Client zurückgeschickt wird. Ende.
Es ist also sehrwohl möglich, mit einem PHP-Programm exakt den selben Server-Dienst anzubieten wie mit dem Java-Programm. Ob das sinnvoll ist? Vermutlich nicht, denn dann kann man wieder nicht einfach »irgend einen Webspace-Anbieter« nehmen. -
ikatools schrieb:
Prinzipiell möglich, ohne starke Änderungen am Client jedoch nicht:
Während du in Java wahrscheinlich mit dem ServerSocket arbeitest, auf Verbindungen wartest und dann ggf. für die neue Sitzung einen neuen Thread startest kannst du das alles in PHP nicht. [ ... ]
Yope, es kommen Sockets und Threads zum Einsatz. Aber Änderungen auf der Clientseite wären für mich einfacher zu erledigen. Die Frage ist nur, wie stark dadurch aktuelle Architektur beeinträchtigt wird.
ikatools schrieb:
Warum brauchte es überhaupt einen eigenen Server? Bietet der die Möglichkeit verschlüsselter Kommunikation? Wenn's nur das ist ist PGP auch eine Lösung...
Ganz einfach. Weil ich es kann und es mir riesen Spaß macht. Sicherlich gibt es Alternativen die man "OOB" nutzen kann, ich gehöre aber eher zu der (kleineren?) Gruppe, die nicht auf ein fertiges Produkt zurückgreifen, sondern versuche, wo es möglich ist, die Hand selbst anzulegen.
Man möchte jedoch meinen, warum das Rad neu erfinden zu müssen, aber das ist ein anderes Thema.
hackyourlife schrieb:
Sobald deine Software komplex genug ist, wirst du sowieso auf vServer/Cloud-Instanzen zurückgreifen müssen. [ ... ]
Das habe ich befürchtet, wollte jedoch wahrscheinlich nicht wahr haben wollen.
hackyourlife schrieb:
Wartbarkeit: seit wann ist PHP wartbarer als Java? Man hört eher, dass das Gegenteil der Fall sein soll.
Ich nahm an, dass PHP in dem Bereich "freundlicher" wär, da nahezu auf allen Webhoster zum Einsatz kommt. Habe, wie erwähnt, wenig Erfahrung mit PHP oder eher "erfahrung == NULL" .
hackyourlife schrieb:
Es ist also sehrwohl möglich, mit einem PHP-Programm exakt den selben Server-Dienst anzubieten wie mit dem Java-Programm. Ob das sinnvoll ist? Vermutlich nicht, denn dann kann man wieder nicht einfach »irgend einen Webspace-Anbieter« nehmen.
Nach bisherigen Recherche komme ich langsam auch zu diesem Entschluss.
Werde daher auf ein "einfaches" Adressbuch zurückgreifen, welcher lediglich als "Beakanntmacher" unter den Clients dienen soll.
Welche Thematik ist in Bezug auf Sicherheit der Datenübertragung in PHP ist zu beachten. Was sollte ich mir generell ansehen? -
Naja, billige vserver bekommst du ab 2,40.
Da könntest du mit Wissen über *nix mit iptables auch flexibel reagieren.
Du musst ja bei p2p doch einiges beachten. IP ist öffentlich und Ports musst du ja auch offen halten. -
hackyourlife schrieb:
ikatools schrieb:
Falsch. PHP allein hat erstmal überhaupt nichts mit Webservern zu tun. PHP-Anwendungen können durchaus eigenständig, und nicht auf Webserver angewiesen sein. PHP unterstützt auch, falls man das aktiviert hat, die Erstellung von (Server)Sockets sowie Threads, Prozessen usw. Auf den meisten Webservern wie z.B. auch auf lima-city ist das allerdings aus Sicherheitsgründen deaktiviert.
[...]
Da kommt über den Webserver (Apache o.ä.) eine Anfrage rein, wodurch in deinem Fall ein PHP-Skript interpretiert wird welches eine Textausgabe erzeugt die dann zum Client zurückgeschickt wird. Ende.
Natürlich hast du da rein akademisch gesehen recht, er wollte es aber bei X-beliebigen Hostern lauffähig haben und einen eigenen Server gerade vermeiden - den Grund, warum ich das dann so geschrieben hab hast du ja schon mitgeliefert.
"Welche Thematik ist in Bezug auf Sicherheit der Datenübertragung in PHP ist zu beachten. Was sollte ich mir generell ansehen?"
Ganz allgemein gilt ja, was durch die schwache Typisierung in PHP noch verstärkt wird, traue nie dem Client.
Ansonsten solltest du dir mal das hier durchlesen: https://www.tu-chemnitz.de/urz/www/php/secure.html
lima-city bietet mittlerweile ja auch TLS fürs Gratispaket an, da bist du hier in Bezug auf Transportverschlüsselung schon ganz richtig.
Beim Adressbuch musst du halt Maßnahmen treffen dass das dir niemand vollspammt, mit falschen Daten füttert etc., also am besten ein Anmeldeverfahren davor schalten - da du das ja nur im Freundeskreis verwendest ist da ja die Verteilung der credentials kein Problem.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage