Seite 2 von 3

Re: Gutes Java-Forum gesucht

Verfasst: Montag 14. November 2011, 10:15
von sma
Die Eclipse IDE ist jetzt 10 Jahre alt. 2001 lief die auf meinem damaligen Notebook mit 1 GB RAM prima. Natürlich haben sich JVM und Eclipse weiter entwickelt und brauchen für mehr Features auch mehr RAM. Dennoch denke ich, dass müsste auch immer noch auf älteren Geräten funktionieren.

Mein kleinster Rechner hat nun 2 GB RAM und dort kan ich die aktuelle Version von IntelliJ IDEA (Community Edition) mit Java 6 in etwa 364MB physikalischem RAM und knapp 600 MB virtuellem Speicher problemlos benutzen. Dabei nutzt mein Mac glaube ich automatisch eine 64-bit JVM, die verschwenderischer mit dem Speicher umgeht, als eine 32-bit-Version unter Linux oder Windows.

Ich finde das jetzt nicht schlimm. Das ist gerade einmal 1/6 des RAMs meiner Maschine.

Stefan

Re: Gutes Java-Forum gesucht

Verfasst: Montag 14. November 2011, 10:34
von lunar
Ich kann mich sma nur anschließen. Auf meinen 64-Bit System benötigt eine aktuelle Eclipse-Version mit ein paar Plugins (e.g. EGit, m2e) nach dem Start 400 MB RAM. Insgesamt sind auf dem System gerade mal 1.4 GB belegt, bei laufendem Gnome-3-Desktop mit Chrome, Eclipse, Banshee und diversen Hintergrunddiensten (inklusive der Desktop-Suche).

Re: Gutes Java-Forum gesucht

Verfasst: Montag 14. November 2011, 13:44
von snafu
Und ich hab hier gerade mal 1GB RAM zur Verfügung. ^^

Aber stimmt natürlich. Irgendwann muss man halt ein paar Kreuzer anlegen und die Technik erneuern. Ich erwarte ja auch nicht, dass Firefox auf nem 386er läuft...

Re: Gutes Java-Forum gesucht

Verfasst: Freitag 13. Januar 2012, 15:21
von ProGammler88
kennt ihr schon??ist zwar eine seite auf englisch, aber mit vielen tutorials:
http://thenewboston.org/tutorials.php

Re: Gutes Java-Forum gesucht

Verfasst: Freitag 13. Januar 2012, 22:39
von cofi
Und was hat das mit dem Thema zu tun? Wenn du die Seite toll findest, dann erstelle doch eine Diskussion im Link-Forum und haeng den Link dazu nicht in eine andere Diskussion, die damit nur begrenzt zu tun hat ...

Fuer mich persoenlich hat die Seite beim Auftauchen des Worts "Videos" verloren.

Re: Gutes Java-Forum gesucht

Verfasst: Freitag 18. Mai 2012, 20:03
von snafu
Fazit nach nem halben Jahr: Ich versuche ja wirklich, mich auf Java einzulassen, aber ich find's nach wie vor grottig, darin zu programmieren. Die Fehlersuche ist ätzend (ja, ich kenne `printStackTrace()`), die zwingenden Typangaben für Zuweisungen nerven, die Lowleveligkeit nervt, die geschweiften Klammern nerven, und noch vieles mehr nervt. Ich weiß ja nicht, aber wenn ich Programmieren so kennen gelernt hätte, dann wär ich sicherlich nicht allzu lange dabei geblieben. Dummerweise fahren die Firmen alle darauf ab, so dass man's leider benötigt, wenn man programmiertechnisch Fuß fassen will. Aber da erzählt ich wohl keinem was Neues...

Re: Gutes Java-Forum gesucht

Verfasst: Freitag 18. Mai 2012, 20:18
von BlackJack
@snafu: Ich finde Java auch nervig, aber mit der richtigen IDE und dem richtigen Vorgehen kann man sich einiges vereinfachen. Zum Beispiel schreibe ich in Eclipse gerne „falschen” Code, einfach so wie ich ihn gerne schreiben *würde* und benutze dann die Korrekturhelfer, die von der IDE angeboten werden. Typen bei Zuweisungen findet die IDE zum Beispiel in vielen Fällen auch selbst heraus. Oder statt eine neue Methode zu definieren und die dann zu verwenden, verwende ich die Methode einfach irgendwo und Eclipse schlägt bei dem Aufruf der nicht vorhandenen Methode als Korrekturmassnahme vor, diese Methode zu erstellen. Da ich schon Argumente beim Aufruf angegeben habe, weiss die IDE in der Regel auch schon welche Typen die Argumente haben müssen und schreibt das alles für mich hin.

Re: Gutes Java-Forum gesucht

Verfasst: Freitag 18. Mai 2012, 20:28
von snafu
Ja, oder bei Collection-Klassen kann man die Dinger z.B. auch einfach direkt verwenden und die IDE schlägt einem den passenden Import vor. Trotzdem find ich's gerade bei Umstrukturierungen von Blöcken nervig, dass man da auf jede geschlossene Klammer achten muss und so. Vermutlich muss ich mich einfach noch mehr an das Arbeiten mit einer IDE gewöhnen. Zum Beispiel beim Umbenennen von Instanzvariablen hat es auch ein bißchen gedauert, bis ich mir (in NetBeans) Strg+R angewöhnt hab, damit alle Verwendungen der Variable entsprechend angepasst werden. Spart jede Menge Arbeit. ^^

Re: Gutes Java-Forum gesucht

Verfasst: Freitag 18. Mai 2012, 22:34
von BlackJack
@snafu: Bei Eclipse kann man mit Shift+Alt und den Cursortasten ausgehend von der aktuellen Cursorposition oder Auswahl mehr oder weniger Quelltext selektieren, wobei die Auswahl immer um komplette Teilausdrücke wächst oder schrumpft. Da werden also auch zusammengehörende Klammern zuverlässig ausgewählt.

Mit Alt+Cursor rauf und runter kann man den Ausgewählten Quelltext dann hoch oder runter verschieben, wobei auch die Einrückung angepasst wird. Nützlich um Invarianten aus Schleifen heraus zu verschieben.

Man kann den ausgewählten (Teil)Ausdruck als lokale Variable oder als Methode aus dem Quelltext ziehen, wahlweise mit Ersetzen aller vorkommen in der Methode. So kann man recht einfach copy'n'paste-Code aufräumen.

Bei kommutativen binären Operatoren kann man die Teilausdrücke auf beiden Seiten vertauschen lassen. Bei bool'schen Ausdrücken kann man die (Teil)Ausdrücke negieren oder eine Negation aus einem Ausdruck heraus ziehen wobei die IDE dann alle nötigen ``!`` einfügt, Vergleichsoperatoren umdreht, und ``&&``/``||`` entsprechend anpasst. Sehr praktisch wenn man über die Zeit gewachsene Bedingungen aufräumen möchte, und Angst hat, dass man unabsichtlich die Bedeutung verändert, wenn man das per Hand macht.

Re: Gutes Java-Forum gesucht

Verfasst: Samstag 19. Mai 2012, 14:28
von lunar
@snafu: Ich verstehe Deine Vorbehalte nicht. Du kritisierst geschweifte Klammern, zwingende Typangaben, das Debugging, usw. All das ist nur eine Frage des richtigen Werkzeugs. Gute Java-IDEs setzen Klammern automatisch, unterstützen durch Vervollständigung der Typangaben und durch automatische Code-Erzeugung, und haben Debugger, die denen für Python in der Regel überlegen sind, schon weil sie die Änderung des Quelltexts im laufenden Programm ermöglichen. Ich würde sagen, Du musst Dir einfach nur von der IDE helfen lassen.

Lässt man sich darauf ein, dann hat Java meines Erachtens sogar positive Seiten. IntelliJ IDEA beispielsweise kann in Maven-Projekten sogar automatisch die passende Abhängigkeit in die "pom.xml" einfügen, wenn man ein unbekanntes Paket importiert. Ich kenne dagegen keine Python-Umgebung, die bei einem unbekannten Import automatisch das richtige Paket aus dem Cheeseshop in die "setup.py" einfügt.

Was an Java wirklich stört, sind die Dinge, die keine IDE korrigieren kann:
  • Es gibt keine Literale für Datenstrukturen, und keine generische Syntax zur Initialisierung von Datenstrukturen wie in C# oder C++11.
  • Es gibt keine Methodenreferenzen und keine Funktionen höherer Ordnung.
  • Es gibt keine anonymen Methoden, und keine Lambdas.
  • Primitive Typen stehen außerhalb der Vererbungshierarchie, i.e. kein "ArrayList<int>".
  • Ausnahmen sind Teil der Methodensignatur, und schränken mithin die Polymorphie ein. Man kann beispielsweise nicht einfach so einen Iterator über eine Datei schreiben, da die Methoden zum Lesen der Datei "IOException" in der Signatur tragen, die Iterator-Schnittstelle aber nicht.

Re: Gutes Java-Forum gesucht

Verfasst: Samstag 19. Mai 2012, 16:30
von Hyperion
lunar hat geschrieben: Man kann beispielsweise nicht einfach so einen Iterator über eine Datei schreiben, da die Methoden zum Lesen der Datei "IOException" in der Signatur tragen, die Iterator-Schnittstelle aber nicht.[/list]
Es muss ja auch eine Ursache für den Adapter-Pattern geben :-D

Re: Gutes Java-Forum gesucht

Verfasst: Samstag 19. Mai 2012, 17:24
von snafu
@lunar: Bitte nicht falsch verstehen. Die verfügbaren Tools und Klassen machen ja sicherlich gerade die Vorteile von Java aus. Das ist mir schon klar. Es ist halt einfach eine gewisse Umgewöhnung für mich, da es - wie du schon sagtest - u.a. nicht so schöne Literale gibt, um mal eben ein Dictionary (Verzeihung, `HashSet()`) zu erstellen. Was ich von Python bisher als elementaren Datentyp kannte, kommt nun mehr oder weniger anonymisiert als Klasse daher. Keine Ahnung, ob jemand versteht, was ich meine... ^^

Auf jeden Fall tu ich mich momentan noch etwas schwer mit Java. Das kann ja durchaus auch an mir und nicht nur an Java liegen. Nervig finden möcht ich's deshalb aber trotzdem. Denn wenn man bei Java auffallend häufig in die Tastatur beißen möchte, dann ist das durchaus ein klares Zeichen von Genervtheit. Da helfen all die objektiven Beschwichtigungen leider auch nicht weiter. ;)

Re: Gutes Java-Forum gesucht

Verfasst: Sonntag 20. Mai 2012, 09:51
von sma
lunar hat geschrieben:Ich würde sagen, Du musst Dir einfach nur von der IDE helfen lassen.
Dem schließe ich mich an und möchte noch ergänzen, dass ich Netbeans für die schwächste unter den drei großen Java IDEs halte: Eclipse ist besser und IntelliJ IDEA IMHO noch besser. Natürlich benötigen diese Werkzeuge mehr Einarbeitungszeit als ein einfacher Texteditor.
lunar hat geschrieben: Was an Java wirklich stört, sind die Dinge, die keine IDE korrigieren kann:
  • Es gibt keine Literale für Datenstrukturen, und keine generische Syntax zur Initialisierung von Datenstrukturen wie in C# oder C++11.
  • Es gibt keine Methodenreferenzen und keine Funktionen höherer Ordnung.
  • Es gibt keine anonymen Methoden, und keine Lambdas.
  • Primitive Typen stehen außerhalb der Vererbungshierarchie, i.e. kein "ArrayList<int>".
  • Ausnahmen sind Teil der Methodensignatur, und schränken mithin die Polymorphie ein. Man kann beispielsweise nicht einfach so einen Iterator über eine Datei schreiben, da die Methoden zum Lesen der Datei "IOException" in der Signatur tragen, die Iterator-Schnittstelle aber nicht.
Literale gibt es keine, aber zumindest für Listen kann man sich mit `Collections.asList(1, "2", drei)` behelfen. Googles Guava-Bibliothek bietet ähnliche Hilfsfunktionen auch für andere Datentypen an. Immer noch nicht so bequem wie bei Python, aber ein Anfang. Und es gibt kaum ein Projekt, wo ich mir nicht selbst schnell so etwas baue:

Code: Alles auswählen

public static <K, V> Map<K, V> map(Object... keysAndValues) {
    Map<K, V> map = new HashMap<>(keysAndValues.length / 2);
    for (int i = 0; i < keysAndValues.length; i += 2) {
      map.put((K) keysAndValues[i], (V) keysAndValues[i + 1]);
    }
    return map;
  }
Speziell wenn man viele unveränderliche Maps erzeugen will, kann man auch das Kopieren sein lassen, und es so machen:

Code: Alles auswählen

public static <K, V> Map<K, V> map(final Object... keysAndValues) {
    return new AbstractMap<K, V>() {
      @Override
      public int size() {
        return keysAndValues.length / 2;
      }

      @Override
      public V get(Object key) {
        for (int i = 0; i < keysAndValues.length; i += 2) {
          if (key.equals(keysAndValues[i])) {
            return (V) keysAndValues[i + 1];
          }
        }
        return null;
      }

      @Override
      public Set<Entry<K, V>> entrySet() {
        throw new UnsupportedOperationException();
      }
    };
  }
Methodenreferenzen kann man sich über Reflektion bauen, aber man muss an allen Ecken und Kanten "checked" Exceptions bekämpfen, was das ganze sehr umständlich macht. Anonyme Funktionen kann man über anonym implementierte Interfaces realisieren, doch man hat immer einen gewaltigen Overhead an Syntax, sodass das letztlich kaum Spaß macht - selbst wenn IDEA diesen Code automatisch ausblendet, wenn man das will.

Mit Java 8 kommen sie dann aber, die Lambdas:

Code: Alles auswählen

list.removeIf( p -> (p.size >= bottom && p.size <= top) );
Und zusammen mit "Extension methods" kann man dann auch Hilfsfunktionen wie "Collections.removeIf" so schreiben, als wenn sie eine Methode wären.

Man muss aber wohl noch mindestens ein Jahr warten, bis Java 8 erscheint. Developer-Builds gibt es aber jetzt schon.

Das man keine List<int> haben kann, empfinde ich noch als das geringste Problem. Soll sich doch die VM um das Auto-Boxing kümmern. In nur ganz seltenen Fällen ist die Performance so kritisch, dass eine List<Integer> wirklich langsamer ist. Und in diesen Fällen kann man dann auch eine eigene Collection-Klasse benutzen. Davon gibt es genug.

Und das "checked Exceptions" letztlich keine gute Idee waren, weil die Nachteile die Vorteile überwiegen, stimme ich zu.

Stefan

Re: Gutes Java-Forum gesucht

Verfasst: Sonntag 20. Mai 2012, 10:00
von snafu
sma hat geschrieben:
lunar hat geschrieben:Ich würde sagen, Du musst Dir einfach nur von der IDE helfen lassen.
Dem schließe ich mich an und möchte noch ergänzen, dass ich Netbeans für die schwächste unter den drei großen Java IDEs halte: Eclipse ist besser und IntelliJ IDEA IMHO noch besser.
Das ist halt das, was er zu Anfang der Veranstaltung (geht über 2 Semester) empfohlen hat. Leider wurde später garnicht mehr weiter drauf eingegangen. Vielleicht kommen ja in späteren Semestern noch irgendwelche ungeahnten Vorteile von Netbeans zum Vorschein...

Denke, ich werde mir dann wirklich mal Eclipse angucken.

Re: Gutes Java-Forum gesucht

Verfasst: Sonntag 20. Mai 2012, 18:31
von lunar
sma hat geschrieben:
lunar hat geschrieben:Ich würde sagen, Du musst Dir einfach nur von der IDE helfen lassen.
Dem schließe ich mich an und möchte noch ergänzen, dass ich Netbeans für die schwächste unter den drei großen Java IDEs halte: Eclipse ist besser und IntelliJ IDEA IMHO noch besser.
Dem wiederum schließe ich mich an :)

Ich wusste nicht, dass Lambdas schon mit Java 8 kommen, und finde es ziemlich bezeichnend, dass Java für dieses so ersehnte Feature mal locker sechs Jahre länger braucht als C#. Ein Grund mehr, warum ich C# für das bessere Java halte, mehr noch, mir C# sogar Spaß macht.
sma hat geschrieben:Das man keine List<int> haben kann, empfinde ich noch als das geringste Problem. Soll sich doch die VM um das Auto-Boxing kümmern.
Ich glaube, hier hast Du mich falsch verstanden. Natürlich soll sich die VM ums Auto-Boxing kümmern, ich will davon eigentlich gar nichts wissen müssen. Mich stört nicht, dass man nicht "List<int>" schreiben kann, sondern dass es neben dem Werttyp noch einen eigenen Referenztypen gibt, sprich dass "5" vom Typ "int" ist, aber in eine "List<Integer>" gesteckt werden will. Auch hier ist C# das bessere Java, weil es ein einheitliche Vererbungshierarchie für alle Typen hat, und nicht zwei Typen für denselben Wert anbietet.

@snafu: Im Sinne dessen, was sma oben über die Java-IDEs festgestellt hat, besser gleich IntelliJ IDEA. Dessen Community-Edition ist kostenlos, sogar freie Software, und reicht für die Universität allemal aus. Die Ultimate-Edition erweitert die freie Variante im Wesentlichen um Unterstützung für Webentwicklung und Application Server, was man als Hobby-Entwickler und Student nicht unbedingt braucht.

Und wenn doch, dann probiere zumindest mal die Demo aus, und überlege Dir ernsthaft, ob Dir IntelliJ nicht doch die 200 € (beziehungsweise 100 € für Studenten) wert ist. Ich für meinen Teil empfand den Schritt von Eclipse zu IntelliJ jedenfalls als große Erleichterung, und halte IntelliJ mittlerweile für deutlich besser als Eclipse.

Re: Gutes Java-Forum gesucht

Verfasst: Sonntag 20. Mai 2012, 22:49
von sma
snafu hat geschrieben:Vielleicht kommen ja in späteren Semestern noch irgendwelche ungeahnten Vorteile von Netbeans zum Vorschein...
Nein, unwahrscheinlich :)
snafu hat geschrieben:Denke, ich werde mir dann wirklich mal Eclipse angucken.
Wieso willst du nur das zweitbeste Steak?

Stefan

Re: Gutes Java-Forum gesucht

Verfasst: Sonntag 20. Mai 2012, 22:53
von sma
lunar hat geschrieben:Ich glaube, hier hast Du mich falsch verstanden. Natürlich soll sich die VM ums Auto-Boxing kümmern, ich will davon eigentlich gar nichts wissen müssen. Mich stört nicht, dass man nicht "List<int>" schreiben kann, sondern dass es neben dem Werttyp noch einen eigenen Referenztypen gibt
Ach so. Verstehe. Ja, das ist doof. Scala löst dieses Problem (und viele andere, manche davon, die man gar nicht gelöst haben will). Ebenso Kotlin oder -- mein Geheimtipp für eine pragmatische Lösung, die leider Eclipse erfordert -- Xtend ebenfalls.

Stefan

Re: Gutes Java-Forum gesucht

Verfasst: Sonntag 20. Mai 2012, 23:26
von snafu
Habe jetzt IntelliJ angeguckt. Erster Eindruck ist eher so naja. Wahrscheinlich muss man die IDE erstmal vorkonfigurieren. Netbeans beschwert sich sofort bei fehlerhaften Codezeilen durch rote Unterstreichungen. IntelliJ hat irgendwie garnichts gemacht. Es kommt beim Beenden auch scheinbar keine Frage, ob man die Änderungen an einer Datei speichern möchte, sondern sie werden ganz einfach gespeichert. Wirkt schon etwas ungewohnt auf mich und vom Aussehen her (Buttons usw) find ich das Ganze auch nicht gerade prickeln. Naja, bei Gelegenheit vielleicht mal Eclipse, wie gesagt.

Re: Gutes Java-Forum gesucht

Verfasst: Sonntag 20. Mai 2012, 23:57
von BlackJack
@snafu: Ich schaue mir auch gerade IntelliJ an und kann das mit den Fehlern nicht ganz nachvollziehen. Sie werden nicht rot unterstrichen, aber der Text wird an der Stelle rot. Es passiert also etwas. Kannst Du mal ein Beispiel zeigen?

Re: Gutes Java-Forum gesucht

Verfasst: Montag 21. Mai 2012, 10:36
von snafu
@BlackJack: Was soll ich jetzt machen? Einen Screenshot, der das zeigt, was ich gesagt habe...?

Ich glaube nicht wirklich, dass eine Fernwartung hier Sinn macht. Wenn ich Lust habe, dann mache ich mich bei Gelegenheit mal selber an die Fehlersuche.

//edit: Hab's hinbekomen. Jetzt sind auch die gewohnten roten Unterstreichungen und Korrekturvorschläge da. :)