La tua azienda sta pensando di passare da Java a un'altra tecnologia? [chiuso]


9

Come tutti gli sviluppatori Java sanno, Oracle ha acquistato Sun e il futuro di Java non è abbastanza chiaro, specialmente perché Oracle vuole monetizzare la JVM. Anche Java come linguaggio è stato obsoleto negli ultimi anni, la non inclusione delle chiusure è un esempio (che potrebbe essere incluso in Java 1.8) Allo stesso tempo, vengono utilizzate alcune nuove tecnologie come Ruby, Scala e Groovy per fornire siti complessi.

Mi chiedo se ci sono aziende o organizzazioni che stanno parlando, facendo picchi o iniziando a utilizzare una tecnologia diversa, con l'idea di smettere di usare Java per progetti sul campo verde, allo stesso modo in cui 15 anni fa le aziende migrarono da C ++, perl e altre tecnologie a Java. Sono anche interessato a sapere quali sono le impressioni di ciò che sta accadendo, ad esempio: pianificare di migrare verso una tecnologia diversa in 2 anni.

Per essere chiari, non sto chiedendo quale tecnologia sia migliore. Sto chiedendo se la tua organizzazione sta pensando di lasciare Java per un'altra tecnologia.


1
Groovy e Scala non dipendono dalla JVM? In tal caso, sono anche preoccupati che Oracle voglia monetizzare la JVM.
POSIX_ME_HARDER,

Hai ragione. Ciò avrà un impatto sull'adozione di Scala, Groovy o JRU nelle aziende che vogliono la jvm commerciale anziché la jvm aperta. Lascerò intatta la domanda originale poiché penso che alcune aziende potrebbero essere felici di pagare per la JVM commerciale al fine di utilizzare una lingua diversa
Augusto,

Come sviluppatore Java, metto in dubbio la tua affermazione "come tutti gli sviluppatori Java sanno". Penso che il futuro di Java sia a) Clear eb) Bright. Sono sicuro che alcune persone potrebbero voler pagare un extra per il pacchetto di supporto "premium" di Oracles, ma per quelli di noi che hanno solo intenzione di attenersi alla versione gratuita e open-source di Java (che non sta andando via!), Allora è piuttosto irrilevante.
Mikera,

Mikera, menzionate l'open source, ma alcuni degli influenti sviluppatori Java che erano soliti condurre progetti open source, stanno conducendo progetti in altre lingue, quindi la loro "energia" viene deviata da Java. Scopri tutti i fantastici framework disponibili per Scala, Groovy o Ruby. Non ho numeri a sostegno di questo, ma potrebbe essere interessante verificare quante "righe di codice" sono state impegnate in repository open source nei diversi linguaggi tradizionali e le tendenze.
Augusto,

Risposte:


9

Niente affatto - in effetti sto investendo molto in Java come piattaforma nella mia azienda (una startup che sviluppa applicazioni e strumenti SaaS per il data mining).

Ecco i motivi:

  • Scegliere Java come piattaforma non significa che devi usare Java come lingua. Usiamo Clojure come linguaggio di sviluppo principale dell'applicazione, saltando occasionalmente in Java dove necessario. Ma anche altre lingue JVM come Scala e Groovy sono fantastiche.

  • Personalmente non sono preoccupato per Oracle . L'implementazione principale di Java continuerà quasi sicuramente ad essere open source ( OpenJDK ) e disponibile gratuitamente. Se Oracle ha fatto qualcosa di stupido, altre grandi aziende (penso in particolare IBM e Google) hanno investito troppo in Java per farla franca, e potrebbero facilmente continuare a sviluppare Java senza l'aiuto di Oracle.

  • La JVM è un ottimo ambiente di esecuzione . Piattaforma multipiattaforma, prestazioni molto elevate, tecnologia JIT ottimizzante estremamente buona. È abbastanza vicino alla velocità nativa che non mi interessa la quantità frazionaria che è più lenta di C / C ++, e questo sovraccarico è più che compensato da un'adeguata raccolta dei rifiuti e da un ambiente di esecuzione con codice di gestione gestito ecc.

  • Java ha un grande ecosistema di librerie open source . In effetti, direi che è il miglior ecosistema in assoluto di qualsiasi lingua. Ciò significa che la maggior parte del "sollevamento di carichi pesanti" in termini di infrastrutture è già stata eseguita, con una qualità estremamente elevata. E il fatto che la maggior parte delle cose di cui hai bisogno sono open source significa che non hai il costo (in termini di denaro e tempo di gestione) di ottenere licenze.

  • Eclipse è un ottimo IDE e fornisce una fantastica catena di strumenti per lo sviluppo di solide applicazioni aziendali. Utilizziamo l'integrazione Maven, JUnit, Git / SVN e una serie di altri strumenti disponibili come plug-in Eclipse. Tutto "funziona".

Infine, quali sono le altre opzioni?

  • .NET è l'unica piattaforma con capacità comparabili e personalmente mi piace C #, ma ti blocca nelle tecnologie Microsoft (peggio di Oracle / IBM IMHO) e non ha la stessa ampiezza dell'ecosistema open source. Va bene per i negozi Microsoft, ma non se vuoi controllare il tuo destino tecnologico. E sì, Mono è carino, ma non posso permettermi di scommettere la mia attività su una piattaforma che potrebbe o meno essere in grado di mantenere un livello di compatibilità di lavoro con il mainstream .NET.

  • Poi ci sono tutti gli altri grandi linguaggi che sono molto bravi in ​​quello che fanno (ad esempio Ruby, Python, PHP, Javascript) ma non offrono un equivalente convincente e completo della piattaforma Java. Il rischio è che devi iniziare a incollare molte cose insieme in un'architettura un po 'meno che bella. Non è un problema per la creazione di siti Web, app veloci e sporche, ma meno allettante per lo sviluppo di prodotti a lungo termine.

  • C / C ++ è ottimo per la programmazione di sistemi e giochi, ma è troppo complesso / costoso / non flessibile per lo sviluppo di applicazioni web moderne.

  • E poi ci sono le belle lingue che amo come Haskell, che sono fantastiche dal punto di vista accademico ma non hanno l'adozione / ecosistema del settore necessario per renderle una scelta credibile della piattaforma. Inoltre posso ottenere la maggior parte dei vantaggi della moderna programmazione funzionale eseguendo Clojure su JVM .....

Quindi sì, è una decisione complessa. Ma ho preso la decisione Java sopra tutte le altre opzioni dopo molte ricerche e considerazioni considerevoli. Prenderò ancora la stessa decisione oggi.

AGGIORNARE

Qualche parola sulla scelta di Clojure su JVM come scelta linguistica. Le motivazioni principali per questo sono state:

  • Concorrenza - Clojure ha una storia di concorrenza unica, funziona bene guardando questo video che descrive alcuni dei concetti chiave. Può scalare in modo affidabile a architetture multi-core massicce utilizzando la memoria transazionale del software . E riesce a farlo senza troppi costi (senza blocco!) Che è un'impresa ingegneristica davvero notevole.
  • Programmazione funzionale - Clojure è un linguaggio funzionale che enfatizza l'immutabilità e le funzioni di ordine superiore. Non è puramente funzionale come Haskell, ma è prima di tutto un linguaggio FP. Alcuni dicono che questo ti aiuta a scrivere programmi migliori.
  • Produttività del programmatore - Clojure ottiene tutti i vantaggi in termini di produttività della filosofia Lisp code-is-data. In pratica, ciò significa funzionalità macro incredibilmente potenti e una sintassi semplice ma estremamente flessibile che è possibile utilizzare per definire i propri DSL per qualsiasi problema che si sta affrontando.
  • Necessità di un linguaggio dinamico adatto per un rapido sviluppo e scripting: Clojure può essere utilizzato in un ciclo standard build-test-deploy ma in realtà è più naturale utilizzare un REPL per sviluppare in modo interattivo, modificando l'ambiente di codice in esecuzione mentre si procede. Ad esempio, utilizzo Incanter per essere in grado di tracciare grafici e visualizzare i dati al volo mentre mi sviluppo per vedere i risultati delle esecuzioni batch.
  • Interoperabilità Java - L'interoperabilità Java di Clojure è molto efficace. Gli oggetti Clojure sono oggetti Java e viceversa, quindi è banale chiamare API e librerie Java ogni volta che ne hai bisogno. Ciò offre tutti i vantaggi dell'intero ecosistema Java di librerie e strumenti.
  • Buona comunità - La comunità di Clojure è piccola ma dinamica, amichevole e in rapida crescita. Un sacco di grandi progetti open source già, come Incanter (calcolo statistico) o Ring / Compojure (framework web server) o antiorario (plugin IDE Eclipse)

Mikera, questo è esattamente quello che stavo chiedendo. La tua azienda sta lasciando Java come lingua principale per lo sviluppo di applicazioni e invece utilizza Clojure. Concordo con te sul fatto che la JVM non scomparirà, in particolare con alcune società che investono in altre lingue in esecuzione sulla JVM. Potresti condividere qualcosa in più su ciò che stava dietro la decisione di usare il clojure come principale linguaggio di sviluppo?
Augusto,

Certo, ho aggiunto alcuni commenti sul perché Clojure in particolare (ho anche considerato la Scala che era anche molto promettente, ma Clojure ha vinto con un margine limitato a causa della sua Lisp-ness)
Mikera,

Grazie per la spiegazione del perché la tua azienda ha deciso di utilizzare il clojure!
Augusto,

7

Tutto dipende dal cliente.

Java avrà sempre una sua piccola nicchia in cui le persone vi graviteranno per una ragione o per l'altra, per gli stessi motivi per cui le persone gravitano su .php o .net, ma alla fine dipende dalle esigenze e dalle preferenze del cliente.

Se un cliente dice ... Voglio che questa applicazione sia in Java ... stiamo per dire di no? probabilmente no ... se dicono che non ci interessa davvero ... lo scriveremo in java? probabilmente no, ma questa è solo una speculazione.

Abbiamo applicazioni scritte in Java che hanno una lunga storia, ma sembra che il cliente stia sostituendo meticolosamente TUTTO con il marchio windows .... oracle to sql server ... unix / linux con server 2008 ... e php e java con .net.

Se ciò accade, sì ... a meno che un nuovo cliente non entri e dica hey ... vogliamo che sia scritto in Java ... useremo .net.


Un grande rivenditore di automobili statunitense sta facendo qualcosa di simile, sta iniziando a costruire la maggior parte dei progetti greenfield in ruby ​​piuttosto che in Java.
Augusto,

1

Prima di tutto, non lavoro in un'azienda di software.

Ok, usiamo Oracle come nostro database principale con tutte le nostre informazioni importanti memorizzate su di esso. Per questo motivo, prevediamo di continuare a utilizzare Java per qualsiasi cosa abbia a che fare con Oracle. L'acquisizione di Oracle da parte di Sun è una spinta per noi per continuare a utilizzare Java per qualsiasi cosa legata a Oracle.

Tuttavia, tutte le applicazioni desktop sono scritte in C # poiché tutto è basato su Windows.


0

La tua azienda sta pensando di passare da Java a un'altra tecnologia?

Per rispondere alla tua domanda. No.

Come tutti gli sviluppatori Java sanno ...

In aziende di qualsiasi dimensione significativa, generalmente non sono gli sviluppatori a decidere questioni come se la società debba spostarsi da Java e verso qualcos'altro. E per i tipi che prendono queste decisioni, sono importanti altri fattori rispetto a quelli che hai elencato.

... il futuro di java sembra abbastanza poco chiaro, specialmente perché Oracle vuole monetizzare la JVM.

Al contrario, penso che il futuro sia chiaro. L'evoluzione di Java continuerà a un ritmo lento ma costante e le tecnologie SE ed EE centrali continueranno a essere libere. Per me, l'unica vera area di incertezza è ciò che accadrà con il bunfight Oracle vs Google. Ma in un modo o nell'altro, mi aspetto che Android / Davlik prospererà in alternativa a Java ME ... ma solo per piattaforme mobili.

Anche Java come linguaggio è stato obsoleto negli ultimi anni, la non inclusione delle chiusure è un esempio (che potrebbe essere incluso in Java 1.8).

Questo può irritare gli sviluppatori, ma la "staleness" è in realtà una conseguenza di Sun / Oracle che presta attenzione a ciò che l'azienda vuole ... un linguaggio / piattaforma con stabilità a lungo termine.

Allo stesso tempo, alcune nuove tecnologie come Ruby, Scala e Groovy vengono utilizzate per fornire siti complessi.

Ancora una volta, dal punto di vista della gestione, la giuria si pronuncia sul fatto che queste tecnologie siano migliori su tutta la linea.

  • Gli aumenti di produttività dichiarati sono davvero dimostrabili a lungo termine?
  • La performance è ancora lì? Scalabilità? Strumenti e librerie di terze parti?
  • Possono assumere personale con esperienza?

Una decisione a livello aziendale di passare a una nuova lingua comporta costi e rischi significativi, soprattutto se esiste una quantità significativa di codice esistente nella lingua "legacy".


@Augusto - Ho risposto alla tua domanda; vedi la prima frase. Sei felice ora?
Stephen C,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.