Projekt: Einen Messenger programmieren

Serenity999

Neu angemeldet
Registriert
9 Sep. 2014
Beiträge
4
Hallo ngb,

bevor ihr weiterlest: ich bin (fast) ein absoluter Laie, was das programmieren angeht. Einblicke, die ich in der Schule erhielt, weckten jedoch mein Interesse am programmieren.
Ich bin bereit viel Zeit in so ein Projekt zu stecken, und hier schien mir der beste Ort, um damit anzufangen.

Mein Ziel ist es, einen Messenger für Android-Handys zu programmieren. Vorrangig geht es mir dabei um Anonymität beim Versenden von Nachrichten, d.h. es soll so schwer wie möglich ermittelbar sein, von welchem Handy diese Nachricht an jenes Handy geschickt wurde. Nachrichten sollen nicht gespeichert werden.

Ich kann mir vorstellen, dass sich das ziemlich optimistisch anhört, weswegen ich mir hier Meinungen einholen will.
Könnt ihr mir eventuell auch Literatur o.Ä. empfehlen?
Und was denkt ihr, wie lange es für einen Laien, der bisher nur rudimentären Kontakt zur Programmiersprache PERL hatte, dauert, bis er das nötige Wissen besitzt?

Für eure Hilfe wäre ich sehr dankbar!!

mfg, Ser
 
Les dir erstmal Grundlagen in Java und OOP an. Überleg dir einfachere Dinge die du umsetzen kannst um die Basics zu lernen. Das würde ich auch zuanfang eher als Konsolenanwendung machen bevor ich mich an die, doch gewöhnungsbedürftige, Entwicklung von Android Apps wagen würde.

Dazu wie man beim Lernen vorgeht gibts schon viele viele viele Threads. Einfach mal bei Google schaun und bei speziellen Fragen hier nochmal einen Thread aufmachen.

Für den Anfang würd ich mir einfach nehmen um Grundlagen anzulesen. Ganz wichtig ist auch, dass du lernst mit der umzughen.
 
Ich bin bereit viel Zeit in so ein Projekt zu stecken
Ich glaube du bist dir der Tragweite eines solchen Vorhabens nicht ganz bewusst. Wenn du da von 0 anfangen möchtest, das Ganze Hand und Fuß haben soll, dann rechne mal mit 8 Stunden am Tag, die nächsten paar Monate. Oder hast du von irgendwas eine Ahnung worauf du aufbauen kannst?
 
Da bastel dir doch lieber einen Webchat der die Nachrichten verschlüsselt, nicht speichert & nutz SSL. (Shoutbox mit Login remix)

//Ein schöner anwenderfreundlicher Jabber Client fürs Handy wäre mal toll. :D
 
Ich sehe das ähnlich wie godlike. So einen Messenger als Anfängerprojekt anzugehen ist ungefähr so, als hättest du gerade dein erstes Bild an die Wand genagelt hast und würdest anschließend beschließen, jetzt ein Haus zu bauen. Vielleicht kriegst du das handwerklich noch irgendwie hin, aber wahrscheinlich hast du dann ein krummes und schiefes Haus mit der Eingangstür im ersten Stock, das beim ersten Gewitter vollläuft und umfällt.

Mit Software ist das ähnlich. Programmieren lernen ist das eine, aber um eine komplette Software zu bauen, brauchst du eine Architektur dafür, du braucht ein Konzept für die Interaktion mit dem Nutzer, für die Verschlüsselung, die Anonymisierung und vieles mehr. Als Anfänger auf der grünen Wiese halte ich das für nicht zu stemmen. Das klappt vielleicht noch beim typischen Mini-Anfängerprojekt wie einem Taschenrechner (obwohl der auch schon nicht ganz ohne ist, wenn er wirklich einsetzbar sein soll), aber nicht bei einem ausgewachsenen Messenger.

Ich empfehle dir, dir einen existierenden Open-Source-Messenger zu suchen, den du auch selber benutzen willst. Dort kannst du mit kleineren Projekten anfangen: Fehlerchen rausmachen, kleine Features neu einbauen, da wird sich genug finden; und es ist für den Anfang eine realistische Größenordnung. Dazu liest du ständig fremden Code und kriegst mit, wie andere Leute bestimmte Probleme gelöst haben. Der Lerneffekt dabei ist enorm.

Es kommt dabei auch nicht einmal darauf an, ob dein Code offiziell in das Projekt einfließt, oder ob es erstmal deine eigene Privatversion bleibt.
 
Beim Programmieren übernimmt man sich extrem schnell.
Selbst die einfachsten Dinge, die im Kopf wirklich überschaubar wirken, können plötzlich in der Praxis unendlich komplex werden, weil man vieles einfach nicht bedacht hat.
Da ist ein Messenger in der Tat eine Ecke zuviel. Und dann auch noch einer, der "sicher" sein soll. Meinst du, du kannst das, woran sich viele große Unternehmen die Zähne ausbeißen? Ich glaube nicht ;)
Gerade beim Thema "Sicher" kommst du zum Thema "Verschlüsselung". Also auch Kryptographie. Und dann gebe ich dir schon einmal direkt den Kotzeimer.

Wie es oben schon steht, nimm was vorhandenes und probiere ein bisschen damit rum. Wenn es schon in diese Richtung gehen soll. Vielleicht auch erstmal auf dem PC, einfach ein Programm dass übers Netzwerk Daten schicken kann. Das ist, als Anfänger, imho schon genug arbeit, wenn man auch wirklich verstehen will, was man da macht.
 
Schau dir doch mal an, das ist ein Tox basierter Android Messanger.
vlt kannst du dich da ein bisschen einbringen, außerdem verschafft das einen groben Überblick über die Komplexität des ganzen.

zum thema tox Zitiere ich mich mal eben selbst.
Tox ist als freie skype alternative entstanden, aber mit dem ziel sichere Kommunikation zu ermögliche.
es hat ein ziemlich cooles durchgehen verschlüsseltes P2P Protokoll das eben nicht nur Text sondern auch Audio und Video Streams übertragen kann.
 
Ich seh das genauso wie War-10-ck und der Rest: Ohne große Java-Erfahrung würde ich mich nicht direkt auf Android stürzen da die Lernkurve dabei relativ gigantisch sein dürfte. Beginn dich zuerst einmal an etwas Kleinerem bevor du so ein komplexes Projekt beginnst und dann entmutigt aufgibst weil du scheitern wirst.
 
wie willst du die Kommunikation den machen? Du musst einen Client programmieren und einen Server. Du musst dich dann also um die Client-Server Kommunikation kümmern und um die Client-zu-Client Kommunikation oder Client-zu-Server-zu-Client


zu erst musst du Java lernen. Du musst anfangen objektorientiert zu programmieren. Dann schaust du dir z. B. bei "Java ist auch eine Insel" , wie man mit Sockets arbeitet. Wenn du ein Beispiel suchst, dann kannst du in google z. B. "Socket Java Insel" eingeben.. Wenn du die Grundlagen kannst - dauert vielleicht ein bis drei Jahre. Dann kannst du folgendes machen:

Ich empfehle dir, dir einen existierenden Open-Source-Messenger zu suchen, den du auch selber benutzen willst. ... Dazu liest du ständig fremden Code und kriegst mit, wie andere Leute bestimmte Probleme gelöst haben. Der Lerneffekt dabei ist enorm.

Aber such dir für den Anfang ein kleines Beispiel Programm. Sonst blickst du sehr wahrscheinlich nicht durch. Ein Problem hast du aber bei fremden Code. Da du noch nicht gut programmieren kannst, wirst du es sehr schwer haben guten Code von schlechten zu unterscheiden. Und es gibt da leider viele Projekte, die murks sind. Alles ist static und ähnliches.
 
ich bin (fast) ein absoluter Laie, was das programmieren angeht.
(...) der beste Ort, um damit anzufangen.
(...) Mein Ziel ist es, einen Messenger für Android-Handys zu programmieren. Vorrangig geht es mir dabei um Anonymität beim Versenden von Nachrichten, d.h. es soll so schwer wie möglich ermittelbar sein, von welchem Handy diese Nachricht an jenes Handy geschickt wurde. Nachrichten sollen nicht gespeichert werden.

Meinst du nicht, dass du dir erst mal eine einfachere Aufgabe stellen solltest?
Für einen eigenen Chatclient brauchst du Client, Server, musst dich mit Crypto auseinandersetzen, Netzwerkprotokollen, Parallelität usw.
 
Ich sehe das ähnlich wie die Anderen hier. Die Zeit die du brauchen wirst um alles zu lernen was dafür erforderlich ist würde ich auch eher in Jahren anstatt in Monaten bemessen. Gerade bei einem Messenger hast du viele Bereiche drin die wirklich "eklig" werden können. Insbesondere die Kryptographie ist ein Bereich den du nicht unterschätzen solltest. Damit allein kannst/wirst du schon unglaublich viel Zeit verbringen.

Setze dir kleine Ziele und lerne erst einmal zu Programmieren. Im Idealfall direkt Objektorientiert. Java bietet sich (wie bereits mehrfach angesprochen) an.
 
  • Thread Starter Thread Starter
  • #12
Erstmal möchte ich euch allen für die zahlreichen Antworten danken!

Solche Antworten habe ich bereits erwartet, ist aber nicht so schlimm. Es geht mir teils auch darum, meine Freizeit mit etwas sinnvollem zu füllen, und Programmieren eigent sich perfekt dazu.
Ich denke, dass einige der hier gennanten Dinge mir beim Anfangen sicher helfen werden, und bitte natürlich um mehr :)

Ich hoffe, ich kann eines Tages mal ein Projekt von mir vorstellen! :D
 
So weit weg ist ein Messenger aber nun nicht.
Server würde ich auch weg lassen, IPs grabben und ne Direktverbindung zwischen zwei Phones aufbauen.
Gibt doch bestimmt Android orientierte Einführungen. Besorg dir so ein Buch, zieh dir das rein und danach kannst du schon alles oder alles außer der Kommunikation zwischen den Geräten.
Dann hast du jedenfalls einen Aufhänger und ein mittelfristiges Ziel, findest in jedem Kapitel was was dir später beim Messenger hilft. Und am Ende kann dein Kumpel sich deine App installieren und ihr chattet über euer Ding :).
 
Allerdings ist beim Verbindungsaufbau zu beachten, dass sich IP Adressen ändern können u. Feuerwände das vorhaben verhindern.
Lieber über ein Stream-Socket zum Server und von dort aus verteilen.
 


Muß der TS dies jetzt schon in seine Planung mit einbeziehen, oder kann er sich das noch einmal überlegen, wenn er sich etwas eingearbeitet hat?
 
Ich seh bei einem komplett eigenen Messenger auch das Problem, dass es *noch* schwieriger ist, jemanden zum benutzen zu bewegen als bei einem verbreiteten offenen Protokoll.

»Wie, es gibt nur die Android-App? Was mach ich dann am iPad und am Windows-PC? Nee, lass mal lieber weiter skypen.«

Das ist doch auch frustrierend, wenns auch im engen Freundeskreis keiner auch nur mit dem Hintern anschaut. Also sollte es schon halbwegs ein Standardprotokoll sein. Aber ob man als Anfänger gleich selber z.B. XMPP implementieren will? Andererseits: der Lerneffekt über Netzwerkprogrammierung ist dabei definitiv enorm. Und wenn mans halbwegs sinnvoll wegkapselt, kann man bei Bedarf immer noch irgendwann zu einer vorhandenen XMPP-Lib wechseln, die mehr Features unterstützt. Vielleicht wäre das gar kein schlechter Anfang für ein eigenes Projekt.
 
Naja wobei, ich denk mal das wenn man einen kleinen Messenger programmieren will als Fun-Projekt muss man nciht unbedingt soforta uf sowas umfangreiches wie XMPP einsetzen. Sicher, irgednwann später kann man es bestimmt austauschen, nur nachdem ich hier im Thread lesen muss das kaum bzw. gar keine Erfahrung in Java vorhanden ist nehme ich mal an das das Weg-Kapseln von der eigentlichen Logik und die Austauschbarkeit gar nicht mal sooo gegeben sind...

Aber wie gesagt, was kleineres zu Beginn ist einfach empfehlenswerter.
 
Lasst den armen doch einfach mal zum Einstieg auf ein Projekt hinarbeiten bzw. verwirklichen auf das er Bock hat. XMPP, oh dear :D.

Das ist doch auch frustrierend, wenns auch im engen Freundeskreis keiner auch nur mit dem Hintern anschaut.
Kommt drauf an, was genau seine Motivation ist. Für mich wäre es das erschaffen an sich unabhängig davon obs dann einer benutzt.
 
Ja, klar kommt das auf die Motivation an. Zumindest mich hätte es am Anfang ziemlich frustriert, etwas zu bauen, was praktisch gar nicht einsatzfähig ist. Und Serenity meint doch, er will viel Zeit investieren. ;) Zumindest kann es sicher nicht schaden, in XMPP mal intensiver reinzuschauen, anstatt allein auf der komplett grünen Wiese anzufangen. Die haben sich ja einige Gedanken gemacht, wie man so ein Protokoll designt und offenbar ist es ja nicht so ganz schiefgegangen.
 
Zurück
Oben