Erwägt Ihr Unternehmen den Übergang von Java zu einer anderen Technologie? [geschlossen]

9

Wie jeder Java-Entwickler weiß, hat Oracle Sun gekauft und die Zukunft von Java sieht ziemlich unklar aus, zumal Oracle die JVM monetarisieren möchte . Java als Sprache war in den letzten Jahren ebenfalls veraltet. Die Nichteinbeziehung von Verschlüssen ist ein Beispiel (das möglicherweise in Java 1.8 enthalten ist). Gleichzeitig werden einige neue Technologien wie Ruby, Scala und Groovy verwendet komplexe Websites zu liefern.

Ich frage mich, ob es Unternehmen oder Organisationen gibt, die reden, Spitzen machen oder anfangen, eine andere Technologie zu verwenden, mit der Idee, Java nicht mehr für Projekte auf der grünen Wiese zu verwenden, so wie Unternehmen vor 15 Jahren von C ++, Perl, migriert sind und andere Technologien zu Java. Ich bin auch daran interessiert zu wissen, was die Eindrücke davon sind, zum Beispiel: Ich plane, in 2 Jahren auf eine andere Technologie zu migrieren.

Um klar zu sein, ich frage nicht, welche Technologie besser ist. Ich frage, ob Ihre Organisation daran denkt, Java für eine andere Technologie zu verlassen.

Augusto
quelle
1
Sind Groovy und Scala nicht von der JVM abhängig? In diesem Fall sind sie auch besorgt darüber, dass Oracle die JVM monetarisieren möchte.
POSIX_ME_HARDER
Du hast recht. Dies wird sich auf die Einführung von Scala, Groovy oder JRUby in Unternehmen auswirken, die das kommerzielle JVM anstelle des offenen JVM wünschen. Ich werde die ursprüngliche Frage unberührt lassen, da ich denke, dass einige Unternehmen gerne für die kommerzielle JVM bezahlen, um eine andere Sprache zu verwenden
Augusto
Als Java-Entwickler habe ich Probleme mit Ihrer Aussage "Wie jeder Java-Entwickler weiß". Ich denke, die Zukunft von Java ist sowohl a) klar als auch b) hell. Ich bin mir sicher, dass einige Leute für das "Premium" -Unterstützungspaket von Oracles extra bezahlen möchten, aber für diejenigen von uns, die nur vorhaben, sich an die kostenlose Open-Source-Version von Java zu halten (die nicht verschwindet!), Dann ist es das etwas irrelevant.
Mikera
Mikera, Sie erwähnen Open Source, aber einige der einflussreichen Java-Entwickler, die früher Open Source-Projekte leiteten, leiten jetzt Projekte in anderen Sprachen, sodass ihre "Energie" von Java weggeleitet wird. Überprüfen Sie alle erstaunlichen Frameworks, die es für Scala, Groovy oder Ruby gibt. Ich habe keine Zahlen, um dies zu belegen, aber es könnte interessant sein zu überprüfen, wie viele "Codezeilen" für Open-Source-Repositories in den verschiedenen Mainstream-Sprachen und den Tendenzen verwendet wurden.
Augusto

Antworten:

9

Überhaupt nicht - tatsächlich investiere ich stark in Java als Plattform in meinem Unternehmen (ein Startup, das SaaS-Anwendungen und -Tools für Data Mining entwickelt).

Hier sind die Gründe:

  • Wenn Sie Java als Plattform auswählen, müssen Sie Java nicht als Sprache verwenden. Wir verwenden Clojure als primäre Anwendungsentwicklungssprache und verwenden bei Bedarf gelegentlich Java. Aber auch andere JVM-Sprachen wie Scala und Groovy sind großartig.

  • Ich persönlich mache mir keine Sorgen um Oracle . Die Hauptimplementierung von Java wird mit ziemlicher Sicherheit weiterhin Open Source ( OpenJDK ) und frei verfügbar sein. Wenn Oracle etwas Dummes getan hat, haben andere große Unternehmen (ich denke insbesondere IBM und Google) zu viel in Java investiert, um damit durchzukommen, und sie könnten Java ohne die Hilfe von Oracle problemlos weiterentwickeln.

  • Die JVM ist eine großartige Ausführungsumgebung . Plattformübergreifend, sehr hohe Leistung, extrem gute Optimierung der JIT-Technologie. Es ist nahe genug an der nativen Geschwindigkeit, dass es mir egal ist, wie wenig es langsamer als C / C ++ ist, und dieser Overhead wird durch eine ordnungsgemäße Speicherbereinigung und eine verwaltete Bytecode-Ausführungsumgebung usw. mehr als ausgeglichen.

  • Java hat ein großartiges Ökosystem von Open Source-Bibliotheken . Tatsächlich würde ich sagen, dass es das beste Ökosystem aller Sprachen ist. Dies bedeutet, dass der größte Teil des "schweren Hebens" in Bezug auf die Infrastruktur bereits in extrem hoher Qualität durchgeführt wurde. Und die Tatsache, dass die meisten Dinge, die Sie benötigen, Open Source sind, bedeutet, dass Sie nicht die Kosten (sowohl in Bezug auf Geld als auch in Bezug auf die Verwaltungszeit) haben, um Lizenzen zu erhalten.

  • Eclipse ist eine großartige IDE und bietet eine fantastische Toolchain für die Entwicklung robuster Unternehmensanwendungen. Wir verwenden die Integration von Maven, JUnit, Git / SVN und eine Vielzahl anderer Tools, die als Eclipse-Plugins verfügbar sind. Es "funktioniert einfach".

Was sind die anderen Optionen?

  • .NET ist die einzige Plattform mit vergleichbaren Funktionen, und ich persönlich mag C #, aber es bindet Sie in Microsoft-Technologien ein (schlechter als Oracle / IBM IMHO) und verfügt nicht über die gleiche Breite des Open-Source-Ökosystems. Gut für Microsoft-Shops, aber nicht, wenn Sie Ihr eigenes technologisches Schicksal kontrollieren möchten. Und ja, Mono ist niedlich, aber ich kann es mir nicht leisten, mein Geschäft auf eine Plattform zu setzen, die möglicherweise in der Lage ist, ein funktionierendes Maß an Kompatibilität mit dem .NET-Mainstream aufrechtzuerhalten.

  • Dann gibt es all die anderen großartigen Sprachen, die sehr gut darin sind, was sie tun (z. B. Ruby, Python, PHP, Javascript), aber kein überzeugendes, umfassendes Äquivalent zur Java-Plattform bieten. Das Risiko besteht darin, dass Sie anfangen müssen, viele Dinge in einer etwas weniger als schönen Architektur zusammenzukleben. Kein Problem beim Erstellen von Websites, schnellen und schmutzigen Apps, aber weniger attraktiv für die langfristige Produktentwicklung.

  • C / C ++ eignet sich hervorragend für die Systemprogrammierung und Spiele, ist jedoch für die moderne Entwicklung von Webanwendungen einfach zu komplex / kostspielig / unflexibel.

  • Und dann gibt es die schönen Sprachen, die ich liebe, wie Haskell, die aus akademischer Sicht fantastisch sind, aber einfach nicht die Branchenakzeptanz / das Ökosystem haben, die erforderlich sind, um sie zu einer glaubwürdigen Plattformwahl zu machen. Außerdem kann ich die meisten Vorteile der modernen funktionalen Programmierung nutzen, indem ich Clojure auf der JVM ausführe.

Also ja, es ist eine komplexe Entscheidung. Aber ich habe die Java-Entscheidung vor allen anderen Optionen nach viel Recherche und Überlegung getroffen. Ich würde heute noch die gleiche Entscheidung treffen.

AKTUALISIEREN

Ein paar Worte zur Wahl von Clojure in der JVM als Sprachwahl. Hauptmotive dafür waren:

  • Parallelität - Clojure hat eine einzigartige Parallelitätsgeschichte. Sehen Sie sich dieses Video an , in dem einige der Kernkonzepte beschrieben werden. Durch die Verwendung von Software Transactional Memory kann es zuverlässig auf massive Multi-Core-Architekturen skaliert werden . Und das ohne viel Aufwand (ohne Sperren!), Was eine bemerkenswerte technische Leistung ist.
  • Funktionale Programmierung - Clojure ist eine funktionale Sprache, die Unveränderlichkeit und Funktionen höherer Ordnung betont. Es ist nicht so rein funktional wie Haskell, aber es ist in erster Linie eine FP-Sprache. Einige Leute sagen, dies hilft Ihnen, bessere Programme zu schreiben.
  • Programmiererproduktivität - Clojure bietet alle Produktivitätsvorteile der Lisp-Code-is-Data-Philosophie. In der Praxis bedeutet dies unglaublich leistungsstarke Makrofunktionen und eine einfache, aber äußerst flexible Syntax, mit der Sie Ihre eigenen DSLs für jedes Problem definieren können, mit dem Sie sich befassen.
  • Bedarf an einer dynamischen Sprache, die für eine schnelle Entwicklung und Skripterstellung geeignet ist - Clojure kann in einem Standardzyklus für Build-Test-Bereitstellung verwendet werden. Es ist jedoch natürlicher, eine REPL für die interaktive Entwicklung zu verwenden und die laufende Codeumgebung im Laufe der Zeit zu ändern. Zum Beispiel verwende ich Incanter , um Diagramme zeichnen und Daten im laufenden Betrieb visualisieren zu können, während ich mich entwickle, um die Ergebnisse von Batch-Läufen zu sehen.
  • Java-Interoperabilität - Clojures Java-Interop ist sehr effektiv. Clojure-Objekte sind Java-Objekte und umgekehrt. Daher ist es trivial, Java-APIs und -Bibliotheken bei Bedarf aufzurufen. Dies bietet Ihnen alle Vorteile des gesamten Java-Ökosystems von Bibliotheken und Tools.
  • Gute Community - Clojures Community ist klein, aber dynamisch, freundlich und wächst schnell. Viele großartige Open Source-Projekte wie Incanter (statistisches Rechnen) oder Ring / Compojure (Webserver-Framework) oder Gegen den Uhrzeigersinn (Eclipse IDE-Plugin)
mikera
quelle
Mikera, genau das habe ich gefragt. Ihr Unternehmen verlässt Java als Hauptsprache für die Anwendungsentwicklung und verwendet stattdessen Clojure. Ich stimme Ihnen zu, dass die JVM nicht verschwinden wird, insbesondere wenn einige Unternehmen in andere Sprachen investieren, die über der JVM laufen. Können Sie uns etwas mehr darüber erzählen, was hinter der Entscheidung stand, Clojure als Hauptentwicklungssprache zu verwenden?
Augusto
Klar, ich habe einige Kommentare hinzugefügt, warum insbesondere Clojure (ich
dachte
Vielen Dank für die Erklärung, warum sich Ihr Unternehmen für Clojure entschieden hat!
Augusto
7

Es hängt alles vom Kunden ab.

Java wird immer eine eigene kleine Nische haben, in der sich die Leute aus dem einen oder anderen Grund dafür interessieren, genau aus den gleichen Gründen, aus denen sich die Leute für .php oder .net interessieren, aber letztendlich hängt es von den Anforderungen und Vorlieben des Kunden ab.

Wenn ein Kunde sagt ... Ich möchte, dass diese Anwendung in Java ist ... werden wir nein sagen? wahrscheinlich nicht ... wenn sie sagen, dass es uns egal ist ... werden wir es in Java schreiben? wahrscheinlich nicht, aber das ist nur Spekulation.

Wir haben in Java geschriebene Anwendungen, die eine lange Geschichte haben, aber es scheint, dass der Kunde ALLES akribisch durch die Marke Windows ersetzt ... Orakel für SQL Server ... Unix / Linux mit Server 2008 ... und PHP und Java mit .net.

Wenn das passiert, dann ja ... es sei denn, ein neuer Kunde kommt herein und sagt hey ... wir wollen, dass dies in Java geschrieben wird ... wir werden .net verwenden.


quelle
Ein großer US-Autohändler macht etwas Ähnliches. Er beginnt, die meisten Greenfield-Projekte eher in Ruby als in Java zu erstellen.
Augusto
1

Zunächst einmal eine Prämisse, ich arbeite nicht bei einem Softwareunternehmen.

Ok, wir verwenden Oracle als Hauptdatenbank, in der alle wichtigen Informationen gespeichert sind. Aus diesem Grund planen wir, Java weiterhin für alles zu verwenden, was mit Oracle zu tun hat. Die Übernahme von Sun durch Oracle ist für uns ein Anreiz, Java weiterhin für alles zu verwenden, was mit Oracle zu tun hat.

Alle Desktopanwendungen sind jedoch in C # geschrieben, da alles auf Windows basiert.

sange
quelle
0

Erwägt Ihr Unternehmen den Übergang von Java zu einer anderen Technologie?

Um Ihre Frage zu beantworten. Nein.

Wie jeder Java-Entwickler weiß ...

In Unternehmen jeder bedeutenden Größe entscheiden im Allgemeinen nicht Entwickler darüber, ob das Unternehmen von Java weg und zu etwas anderem wechseln soll. Und für die Typen, die diese Entscheidungen treffen, sind andere Faktoren als die von Ihnen aufgeführten wichtig.

... die Zukunft von Java sieht ziemlich unklar aus, zumal Oracle die JVM monetarisieren will.

Im Gegenteil, ich denke, dass die Zukunft klar ist. Die Java-Evolution wird langsam, aber stetig fortgesetzt, und die SE- und EE-Kerntechnologien werden weiterhin kostenlos sein. Für mich ist der einzige wirkliche Unsicherheitsbereich, was mit dem Bunfight von Oracle gegen Google passieren wird. Aber auf die eine oder andere Weise erwarte ich, dass Android / Davlik als Alternative zu Java ME erfolgreich sein wird ... aber nur für mobile Plattformen.

Java als Sprache war in den letzten Jahren ebenfalls veraltet. Die Nichteinbeziehung von Schließungen ist ein Beispiel (das möglicherweise in Java 1.8 enthalten ist).

Dies mag Entwickler ärgern, aber die "Stalenität" ist tatsächlich eine Folge davon, dass Sun / Oracle darauf achtet, was das Unternehmen will ... eine Sprache / Plattform mit langfristiger Stabilität.

Gleichzeitig werden einige neue Technologien wie Ruby, Scala und Groovy verwendet, um komplexe Websites bereitzustellen.

Auch hier ist die Jury aus Managementsicht unschlüssig, ob diese Technologien auf der ganzen Linie besser sind.

  • Sind die behaupteten Produktivitätssteigerungen langfristig wirklich nachweisbar?
  • Ist die Aufführung dort schon? Skalierbarkeit? Tools und Bibliotheken von Drittanbietern?
  • Können sie erfahrene Mitarbeiter einstellen?

Eine Entscheidung auf Unternehmensebene, auf eine neue Sprache umzusteigen, ist mit erheblichen Kosten und Risiken verbunden, insbesondere wenn in der "Legacy" -Sprache eine erhebliche Menge an vorhandenem Code vorhanden ist.

Stephen C.
quelle
@ Augusto - Ich habe Ihre Frage beantwortet; siehe ersten Satz Bist du jetzt glücklich?
Stephen C