Java Projekte für Einsteiger.





Hallo,
ich bin gerade dabei Java zu lernen. Mittlerweile beherrsche ich die Grundkenntnisse und wollte euch fragen, wie man sich bei Open Source Projekten bewerben kann. Außerdem wäre es nett, wenn ihr mir ein paar Links zu Projekten schicken würdet. Welche Projekte es sind, ist mir egal, es sollte nur so sein, das ich dort viele Erfahrungen über das praktische Programmieren sammeln kann, da es alleine auf dauer langweilig wird. Die Projekte sollten übrigens nicht zu groß sein, da ich auch noch nicht wirklich Erfahrener Java Programmierer bin. Wäre schön wenn ihr mir konstruktive Tipps und Antworten geben könntet.  

P.S Falls ihr gerade was macht könnte ich euch ja vielleicht helfen :)?
Naja, der Quelltext von frei lizenzierter Software wird üblicherweise in einem Online-Quellcodeverwaltungssystem organisiert. Diese Verwaltungssysteme müssen von irgendjemandem gehostet werden, es gibt aber auch kostenlose Angebote wie SourceForge (Subversion) oder GitHub (git). Und von der dort eingesetzten Software hängt es dann auch mehr oder weniger ab, wie man idealerweise zwecks Beteiligung vorgeht. Bei SourceForge muss der Projekt-Administrator dem SourceForge-Account des Entwicklers Schreibberechtigung einrichten, damit letzterer, nachdem er mittels Subversion die aktuelle Fassung des Codes heruntergeladen und seine Änderungen vorgenommen hat, diese auch wieder ins Online-Repository hochladen kann. Bei GitHub klont man sich gleich den ganzen Code auf den eigenen GitHub-Account ("Fork" genannt), lädt sich mittels git die eigene Online-Kopie lokal herunter, ändert diese, lädt in den eigenen Fork hoch und hinterlegt dem Projekt-Administrator des Originals eine Benachrichtigung, dass dieser doch die Änderungen des Forks in die offizielle Version übernehmen soll. Es empfiehlt sich generell, über die Ticket-Systeme der Projekte die Arbeit an offenen Aufgaben abzusprechen oder für das eigene Anliegen ein neues Ticket zu öffnen, was vor allem bei SourceForge auch darum wichtig ist, um konfligierende Änderungen und das dadurch notwendige Merging möglichst zu vermeiden, sodass die "Bewerbung" bei GitHub-Projekten allgemein einfacher ist, weil man da erstmal unabhängig arbeiten kann.


Bei mir sieht das dann so aus:


<https://github.com/skreutzer>


ist aber nicht gerade als repräsentativ zu betrachten.
Ich würde auch gleich mit Java anfangen, wenn du es im Endeffekt sowie so lernen willst. 


Wenn man sich vernünftig dransetzt kann man eigentlich mit jeder Sprache anfangen. <p>schauen sie sich das <a href="http://openclipart.org/">openclipart-projekt an</a> - scheint ziemlich umfangreich zu sein.</p> Es reicht ja schon, wenn du Kopien der Bewerbungen selbst hast, falls keine Absage kam, wenn du was erhalten hast, kannst du auch davon eine Kopie dazu legen. Es genuegt sicher auch eine von dir gefuehrte Liste, wo du immer eintraegst, bei wem du dich beworben hast, als was genau und wann und falls eine Rueckmeldung kam und wann und aufgrund was du dich beworben hast (Initativbewerbung, Zeitungsinserat, Ausschreibung online oder Arbeitsamt). 


Sobald sie die Namen der Firmen haben, koennen die theoretisch auch mal bei einer Firma nachfragen, ob das stimmt und damit ist es glaubhaft, dass du dich bemuehst und nicht nur zum Schein Ausbildungssuchend gemeldet bist.


Also stell jetzt an Kopien und Infos auf, so gut es dir noch moeglich ist und gebe denen das. Und fuer die Zukunft behalte dir gleich genug Infos. Du musst ja auch die Uebersicht behalten, wo noch was offen steht an Bewerbungen. <p>könnte nur ich sein, aber wenn ich einstellen würde, würde mich interessieren, wie sie zu ihren lösungen gekommen sind, nicht nur zu den lösungen selbst. ich möchte sehen, wie sie denken, warum sie bestimmte dinge getan haben und eine breite basis von materialien, die ihre fähigkeiten in ixd veranschaulichen - sei es drahtgitter, personas, mentale modelle, skizzieren, moderation usw.</p><p>jeder kann tools erlernen (z. b. omnigraffle, visio, indesign usw.), aber sie können auffallen, indem sie zeigen, wie sie ihre fähigkeiten zur lösung von problemen einsetzen.</p><p>ich würde vorschlagen, den artikel von whitney hess zu lesen. ich denke, er spricht gut an, wonach die leute in ixd-portfolios suchen:</p><p> <a href="http://www.uxmatters.com/mt/archives/2009/10/process-not-portfolio.php">http://www.uxmatters.com/mt/archives/2009/10/process-not-portfolio.php</a> </p> hallo paul,

herzlich willkommen hier im forum :)

für richtige native android entwicklung solltest du java können.
wie sind denn die analogen daten abzurufen und wie schnell willst du diese auslesen? Wenn es etwas mehr sein darf, dann finde ich "Design Thinking" oder auch "Design Sprints" sehr passend. Das ist allerdings beides nichts, was man mal eben in ein kurzes Meeting einbindet, sondern eine komplette Methodik in der es in beiden Fällen auch darauf ankommt, dass man ein möglichst interdisziplinäres Team zusammenstellt, um von den verschiedenen Sichtweisen zu partizipieren und dann in einem strukturierten Prozess zuerst einmal daran arbeitet, eine sinnvolle / lösenswerte Problemstellung zu erarbeiten. Im weiteren Verlauf werden konkrete Lösungsideen erarbeitet, ein Prototyp entwickelt, der dann an echten Kunden verprobt wird. 

Zum Start der Zusammenarbeit eines neuen Teams, bzw. beim Projekt-/Produktentwicklungsstart finde ich das super passend.

Nähere Infos dazu gibt's im Teamprove Blog: [Design Thinking](https://www.teamprove.de/blog/design-thinking-1-innovation-mit-methode?highlight=WyJkZXNpZ24iLCJ0aGlua2luZyIsImRlc2lnbiB0aGlua2luZyJd) oder [Design Sprint](https://www.teamprove.de/blog/design-sprint-mach-s-wie-google?highlight=WyJkZXNpZ24iLCJ0aGlua2luZyIsImRlc2lnbiB0aGlua2luZyJd)

Innerhalb dieser Methoden wird dann durchaus auf andere Elemente wie z.B. verschiedene Brainstorming Techniken gesetzt. <p> <a href="http://docs.oracle.com/javase/tutorial/java/javaoo/accesscontrol.html">das offizielle tutorial</a> kann für sie von nutzen sein.</p><pre> \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ | │ klasse │ paket │ unterklasse │ unterklasse │ welt | | │ │ │ (gleiche packung) │ (verschiedene packungen) │ | | ───────────┼───────┼─────────┼ ──────────┼──────────┼──────── | | public │ + │ + │ + │ + │ + | | ───────────┼───────┼─────────┼──────────┼─── ───────┼──────── | | protected │ + │ + │ + │ + │ | | ───────────┼───────┼─────────┼──────────┼─── ───────┼──────── | | kein modifikator│ + │ + │ + │ │ | | ───────────┼───────┼─────────┼──────────┼─── ───────┼──────── | | privat │ + │ │ │ │ | | \_\_\_\_\_\_\_\_\_\_\_ | \_\_\_\_\_\_\_ | \_\_\_\_\_\_\_\_\_ | \_\_\_\_\_\_\_\_\_\_ | \_\_\_\_\_\_\_\_\_\_ | \_\_\_\_\_\_\_\_ | +: zugänglich leer: nicht zugänglich </pre> <p>der beste weg, für ihr blog zu werben, ist nicht, das blog selbst zu bewerben, sondern die darin enthaltenen informationen. wenn sie einen artikel darüber schreiben, wie sie ein häufig auftretendes programmierproblem lösen, sollten sie nach personen suchen, bei denen dieses problem auftritt. versehen sie sie dann mit einem link zu ihrer lösung.</p><p>die leute sind an lösungen für ihre probleme interessiert, und das programmieren von blogs wird interessant, wenn der blogger weiterhin lösungen für probleme veröffentlicht, mit denen sie konfrontiert sind. ich folge css-tricks.com aus genau diesem grund. es gibt lösungen für probleme, die ich als webentwickler habe.</p><p>wenn sie probleme in foren (oder auf websites wie diesen) suchen und ihre relevanten links bereitstellen, wird ihr google-ranking ebenfalls steigen, da sie über andere websites verfügen, die zu ihren websites führen.</p><p>vorsicht jedoch! versuchen sie, ihre links nicht zu spammen. stellen sie sicher, dass sie auf relevante informationen verweisen, die für diejenigen hilfreich sind, die nach einer lösung für ein problem suchen.</p> <p>sie sollten sich mit ziemlicher sicherheit <a href="http://clojure.org/">clojure</a> ansehen - meiner meinung nach ist es die beste moderne sprache für multi-core-programmierung und äußerst produktiv.</p><p>hauptmerkmale:</p><ul> <li>es ist eine <strong> funktionale sprache </strong>, die sowohl für die parallelität als auch für ihre fähigkeit, sich mit höheren abstraktionen zu entwickeln, von vorteil ist. es verfügt über vollständig unveränderliche persistente datenstrukturen und verzögerte sequenzen, die jedem bekannt sind, der erfahrung mit funktionalen sprachen wie haskell hat.</li> <li>es verfügt über ein sehr neuartiges <strong> software-transaktionsspeichersystem </strong> für den gleichzeitigen sperrenfreien zugriff auf den veränderlichen zustand. das gleichzeitige sicherstellen von code ist oft so einfach wie das einschließen in einen (dosync ....) block.</li> <li>es ist ein <strong> [~ # ~] lisp [~ # ~] </strong> - was es extrem leistungsfähig für die makrobasierte metaprogrammierung und codegenerierung macht. dies kann signifikante <a href="http://www.paulgraham.com/avg.html">produktivitätsvorteile</a> bringen (aufsatz von paul graham - "beating the averages")</li> <li>es ist eine <strong> jvm-sprache </strong> - so erhalten sie nicht nur zugriff auf die große auswahl an bibliotheken und tools in java ökosystem profitieren sie auch von dem enormen technischen aufwand, der dazu beigetragen hat, die jvm zu einer effektiven plattform für gleichzeitige serverseitige anwendungen zu machen. aus praktischen gründen bietet dies einen großen vorteil gegenüber sprachen, die nicht über diese grundlage verfügen auf.</li> <li>es ist <strong> dynamisch </strong> - was zu sehr präzisem code und viel produktivität führt. beachten sie jedoch, dass sie bei bedarf optionale statische typhinweise für die leistung verwenden können.</li> <li>die sprache <strong> basiert auf abstraktionen </strong>, was etwas schwer zu erklären ist, aber der nettoeffekt besteht darin, dass sie eine reihe relativ orthogonaler merkmale erhalten, die sie kombinieren können, um sie zu lösen deine probleme. ein beispiel wäre die sequenzabstraktion, mit der sie code schreiben können, der sich mit jedem "sequentiellen" objekttyp befasst (der alles aus listen, zeichenfolgen, java arrays, unendlich faulen sequenzen, zeilen) enthält aus einer datei gelesen werden etc.)</li> <li>es gibt eine <strong> großartige community </strong> - hilfreich, aufschlussreich, aber vor allem sehr pragmatisch - der fokus in clojure liegt im allgemeinen auf "dinge erledigen".</li> </ul><p>einige mini-codebeispiele mit einer nebenläufigkeit:</p><pre><code>;; define and launch a future to execute do-something in another thread (def a (future (do-something))) ;; wait for the future to finish and print its return value (println @a) ;; call two functions protected in a single stm transaction (dosync (function-one) (function-two)) </code></pre><p>insbesondere lohnt es sich, eines oder mehrere dieser videos anzusehen:</p><ul> <li> <a href="http://www.infoq.com/presentations/value-identity-state-rich-hickey">http: //www.infoq.com/presentations/value-identity-state-rich-hickey</a> </li> <li> <a href="http://www.infoq.com/presentations/are-we-there-yet-rich-hickey">http: //www.infoq.com/presentations/are-we-there-yet-rich-hickey</a> </li> <li> <a href="http://www.infoq.com/presentations/clojure-the-art-of-abstraction">http: //www.infoq.com/presentations/clojure-the-art-of-abstraction</a> </li> </ul> Hallo mk1905,


der gleiche Rat wie immer in solchen Fällen: schreib einen Entwurf und stell ihn hier zwecks Verbesserungsvorschlägen ein (bitte vollständig und anonymisiert)!


Anregungen findest Du z. B. hier: karrierebibel.de/dossier-bewerbungsschreiben-das-gehort-ins-anschreiben/