Warum wird soviel in Java/C# entwickelt?



  • Interfaces (seltsamerweise gibt es ja genug Leute, die 'pure abstract classes' als Workaround benutzen

    Entweder versteh ich Interfaces nicht oder Interfaces sind einfach nur abstrakte Klassen.

    Ich kenn Java nicht sehr gut, aber bis auf Nested Klassen, die in Java eindeutig besser sind, gibt es keine lustigen Sprachfeatures, wie Templates. Wie gesagt, man kann das als Vorteil sehen, weil die Sprache dadurch leichter beherschbar wird.

    Das man innerhalb der Klasse nur Integral Konstanten deklarieren kann, ist wirklich ein wenig merkwürdig. Aber niemand will hier behaupten, dass es an C++ keine Ecken und Kanten gibt, genauso wie es in Java auch Dinge gibt, wo man sich an den Kopf fassen muss.



  • Die Sprache Java selber hat sein Haupt-Designziel, dass Java Code leicht lesbar und wartbar (auch von anderen) ist, sehr gut erreicht.

    Ne das ziel gut lesbar hat Java schon deshalb nicht erreicht, weil es eine C-artige Synthax verwendet. 👎

    Interfaces (seltsamerweise gibt es ja genug Leute, die 'pure abstract classes' als Workaround benutzen vgl. Delegates/nested Classes/Funktionszeiger

    Interfaces in Java sind aber auch nicht der Hit. Es gibt Sprachen, in denen Interfaces deutlich besser gelöst sind. In Java sind Interfaces doch wirklich nur wie ABCs.

    Delegates/nested Classes/Funktionszeiger

    Verstehe ich jetzt nicht.
    Delegates sind cooler als nested Classes, wenn es um die selben Aufgaben geht. Natürlcih können Nested Classe noch viel mehr als Delegates, was man aber selten braucht. Funktionszeiger sind das, was man noch aus C hat. Aber es gibt ja boost::function oder boost::signal - je nauch Aufgabe - und damit können delegates nicht mithalten (was sie aber auch nicht brauchen).



  • kingruedi schrieb:

    Interfaces (seltsamerweise gibt es ja genug Leute, die 'pure abstract classes' als Workaround benutzen

    Entweder versteh ich Interfaces nicht oder Interfaces sind einfach nur abstrakte Klassen.

    Korrekt! Javas Interfaces sind einfach nur abstrakte Klassen. Also alle Methoden virtual = 0. Mehr nicht.



  • kingruedi schrieb:

    ...gibt es keine lustigen Sprachfeatures, wie Templates.

    In java 1.5 sind Templates enthalten 🙂 für mich ist Java damit nochmal eine stufe aufgestiegen. nichtdestotrotz sollte man find ich schon genau überlegen, welche sprache man wann einsetzt. jede hat ihre spezifischen vorteile



  • Korbinian schrieb:

    kingruedi schrieb:

    ...gibt es keine lustigen Sprachfeatures, wie Templates.

    In java 1.5 sind Templates enthalten 🙂 für mich ist Java damit nochmal eine stufe aufgestiegen. nichtdestotrotz sollte man find ich schon genau überlegen, welche sprache man wann einsetzt. jede hat ihre spezifischen vorteile

    Nein! Das sind keine Templates im Sinne von C++.

    Auch das was C# da einführt. Mehr als container<T> kommt da ja eh nicht bei raus und das bezeichne ich nicht als lustiges Sprachfeature *g*



  • Artchi schrieb:

    Korrekt! Javas Interfaces sind einfach nur abstrakte Klassen. Also alle Methoden virtual = 0. Mehr nicht.

    dürfen interfaces attribute haben?



  • Nur static final konstanten. wenn man in interfaces variablen normal deklariert, werden daraus automatisch static final variablen. (AFAIK)



  • Ich frag mich ernsthaft ob den Threadstarter solche Detailfragen interessieren.
    http://www.parashift.com/c++-faq-lite/big-picture.html#faq-6.4

    IMHO sind Fragen wie "gibt es für Java eine Visual Studio ähnliche IDE" oder "Was wird aus Java wenn Sun irgendwann pleite geht" wesentlich wichtiger als einzelne Sprachfeatures.



  • Welche Sprache die mächtigeren Mittel hat ist im Prinzip zweitrangig. Für die meisten Auftraggeber ist wichtig: schnelle und günstige Entwicklung.

    Das sind beides Argumente die für Java sprechen(C# kenn ich nicht weiter). Für C++ bedarf es einfach mehr Erfahrung um gleiches zu erreichen.

    Die zweite Punkt pro Java sind sicherlich die in Mode geratenen Thin-Clints in Kombination mit J2EE Application Servern.

    asdrubael schrieb:

    Ich frag mich ernsthaft ob den Threadstarter solche Detailfragen interessieren.
    http://www.parashift.com/c++-faq-lite/big-picture.html#faq-6.4

    IMHO sind Fragen wie "gibt es für Java eine Visual Studio ähnliche IDE" oder "Was wird aus Java wenn Sun irgendwann pleite geht" wesentlich wichtiger als einzelne Sprachfeatures.

    Zu 1: Eclipse, JDeveloper, JBuilder
    Zu 2: Sun wird IMHO in den nächsten 2 Jahren Java freigeben. Es gibt auch jetzt schon andere Umgebungen für Java.

    <edit>Aussage präzisiert 😉 </edit>



  • Ihr diskutiert bereits wieder auf einer Ebene, die für die Auswahl einer Programmiersprache für ein Projekt eher belanglos ist.



  • Ob eine Sprache "plattformunabhängig" ist oder selbst eine komerzielle und proprietäre Plattform darstellt finde ich nicht so belanglos.



  • Also, zum einen ist die Frage nach Plattformunabhängigkeit in vielen realen Projekten weniger wichtig. Und wie ich bereits erwähnte, muß man auch ein Java-Programm auf jedem OS testen, da oberhalb einer gewissen Abstraktionsebene die Unterschiede im OS einfach vorhanden sind und sich nicht mehr scheinbar übertünchen lassen.

    Aber davon spreche ich ja gar nicht: die Leute hier diskutieren bereits wieder über Templates und Interfaces... das meinte ich eigentlich. Hat jemals einer in einem realen Industrieprojekt davon gehört, daß die Wahl einer Projektsprache davon abhängig gemacht wurde, ob es Templates oder Interfaces gab???



  • Aber davon spreche ich ja gar nicht: die Leute hier diskutieren bereits wieder über Templates und Interfaces... das meinte ich eigentlich. Hat jemals einer in einem realen Industrieprojekt davon gehört, daß die Wahl einer Projektsprache davon abhängig gemacht wurde, ob es Templates oder Interfaces gab???

    Nein, aber darum geht es ja auch in der Diskussion nicht mehr. Natürlich interessiert sich da niemand dafür, welche Sprachfeatures die Sprache hat. Das haben wir ja auch in dem Thread bereits erwähnt, dass Java hier vorallem dadurch "gewinnt", dass Entwicklung von Anwendungen erleichtert wird.

    Man wählt eben die Sprache aus, die am besten für das Projekt geeignet ist. Das hängt natürlich davon ab, wo das Knowhow der Entwickler liegt, welche Tools und welcher Code bereits in der Firma vorhanden ist, welcher Manager mit wem Golf spielt und so weiter.

    Die wenigsten Firmen, die seit 20 Jahren zum Beispiel Embedded Anwendungen in Forth schreiben werden auf einmal Java oder C++ oder GodsOwnFuckingLanguage nehmen, weil das die Erfahrung und Investitionen der letzten 20 Jahre mit einem schlag köpfen würde.



  • Diese beiden Aussagen:

    kingruedi schrieb:

    Man wählt eben die Sprache aus, die am besten für das Projekt geeignet ist.

    kingruedi schrieb:

    Das hängt natürlich davon ab, wo das Knowhow der Entwickler liegt, welche Tools und welcher Code bereits in der Firma vorhanden ist, welcher Manager mit wem Golf spielt und so weiter.

    stehen meiner Meinung nach im Widerspruch zueinander.



  • Vom Sprachtechnischen Standpunkt auf jeden Fall. Aber das ist ja nicht der einzige Punkt, der bei industriellen Projekten wichtig ist, sonst käm es ja wirklich auf Templates oder Interfaces an.

    Du kennst dich damit aber auf jeden Fall besser aus als ich.



  • Magoon schrieb:

    Zu 2: Sun wird wahrscheinlich in den nächsten 2 Jahren Java freigeben.

    Ist zwar OT, aber:

    1. Wo hast du das denn her? Ich halte das ehrlich gesagt für eher unwahrscheinlich.
    2. Was soll der Vorteil davon sein bzw. was soll der Unterschied zum jetzigen Modell sein (theoretisch und praktisch gesehen)?



  • @Gregor: Das mit den 2 Jahren habe ich mal angenommen, da Sun mittlerweile vieles Produkte unter OOS Lizenzen stellt. Konkrete Pläne soll aber wohl schon geben.

    http://www.zdnet.com.au/news/software/0,2000061733,39149502,00.htm



  • das Java 2 SDK ist schon längst open source.

    auf bald
    oenone



  • Magoon schrieb:

    @Gregor: Das mit den 2 Jahren habe ich mal angenommen, da Sun mittlerweile vieles Produkte unter OOS Lizenzen stellt. Konkrete Pläne soll aber wohl schon geben.

    http://www.zdnet.com.au/news/software/0,2000061733,39149502,00.htm

    Ok, danke für den Link. Ist sehr interessant. Ich war bisher der Meinung, dass die Entwicklung diesbezüglich eher in die Richtung "Wie kann man die Community stärker an der Entwicklung usw. von Java beteiligen, ohne es zu OSS zu machen" geht.

    Man sieht diesbezüglich vor allem einen immer transparenteren Entwicklungsprozess, der es interessierten Leuten ermöglicht, sich zu Entwicklungen zu Java zu äußern oder Ideen anzuregen. Im Vergleich zu Java 5.0 gibt es jetzt für Java 6.0 zum Beispiel öffentliche Foren, die sich genau hiermit befassen und man kann auch jederzeit relativ aktuelle "Snapshots" von Java 6.0 als Source oder Binary herunterladen. Auch das JCK (Java Compatibility Kit) ist inzwischen als Code verfügbar, wobei die momentane Lizenz die Nutzung hiervon auf das Lesen des Sourcecodes einschränkt.

    Was man bisher nicht beobachten kann, ist eine Absicht, Java unter eine OS-Lizenz, wie die GPL oder so zu stellen. Deshalb hat mich deine Aussage etwas überrascht. Mal sehen, was da kommt, ich würde diesen zdnet-Artikel diesbezüglich nicht überbewerten. Wie in dem Artikel schon steht, ist der Schritt hin zu einem Open Source Java in der Java Community sehr umstritten und selbstverständlich wird es da auch bei Sun unterschiedliche Sichtweisen geben. Ich denke also nicht, dass das, was der da sagt zu 100% sicher ist.



  • oenone schrieb:

    das Java 2 SDK ist schon längst open source.

    Nein. "Open Source" hat interessanter Weise als Begriff mehr Bedeutung bekommen, als "der Code ist öffentlich verfügbar". Mit dem Begriff "Open Source" sind auch bestimmte Bedingungen an die Lizenzen usw. verbunden.


Anmelden zum Antworten