Şirketiniz java'dan başka bir teknolojiye geçiş yapmayı düşünüyor mu? [kapalı]


9

Her Java geliştiricisinin bildiği gibi, Oracle Sun'ı satın aldı ve java'nın geleceği oldukça belirsiz görünüyor, özellikle Oracle JVM'den para kazanmak istiyor . Dil olarak Java da son birkaç yıldır bayat, kapanışların dahil edilmemesi bir örnektir (java 1.8'e dahil edilebilir) Aynı zamanda Ruby, Scala ve Groovy gibi bazı yeni teknolojiler kullanılıyor karmaşık siteler sunmak için.

Yeşil alan projeleri için java kullanmayı bırakma fikri ile, 15 yıl önce şirketlerin C ++, perl'den göç ettiği gibi konuşan, sivri uç yapan veya farklı bir teknoloji kullanmaya başlayan şirketler veya kuruluşlar olup olmadığını merak ediyorum. ve Java için diğer teknolojiler. Ayrıca, bunun neler olduğuna dair izlenimlerin neler olduğunu bilmek istiyorum, örneğin: 2 yıl içinde farklı bir teknolojiye geçmeyi planlamak.

Açık olmak gerekirse, hangi teknolojinin daha iyi olduğunu sormuyorum. Kuruluşunuzun Java'yı başka bir teknolojiye bırakmayı düşünüp düşünmediğini soruyorum.


1
Groovy ve Scala JVM'ye bağımlı değil mi? Öyleyse, Oracle'ın JVM'den para kazanmak isteyenlerden de endişe ediyorlar.
POSIX_ME_HARDER

Haklısın. Bunun, açık jvm yerine ticari jvm isteyen firmalarda Scala, Groovy veya JRUby'nin benimsenmesi üzerinde bir etkisi olacaktır. Bazı şirketlerin farklı bir dil kullanmak için ticari JVM için ödeme yapmaktan mutlu olabileceğini düşündüğüm için orijinal soruyu el değmeden bırakacağım
Augusto

Bir Java geliştiricisi olarak, "her Java geliştiricisinin bildiği gibi" ifadenizle ilgili sorunu ele alıyorum. Java'nın geleceği hem a) Net hem de b) Parlak. Eminim bazı insanlar Oracles "premium" destek paketi için ekstra ödeme yapmak isteyebilir, ancak Java'nın ücretsiz, açık kaynaklı sürümüne bağlı kalmayı planlayanlarımız için (ki bu gitmiyor!) biraz alakasız.
mikera

Mikera, açık kaynaktan bahsediyorsunuz, ancak açık kaynaklı projelere öncülük eden etkili java geliştiricilerinden bazıları şimdi diğer dillerde projelere liderlik ediyor, bu yüzden "enerjileri" java'dan uzaklaşıyor. Scala, Groovy veya Ruby için tüm şaşırtıcı çerçeveleri kontrol edin. Bunu destekleyecek sayılarım yok, ancak farklı ana akım dillerinde ve eğilimlerde açık kaynak havuzlarına kaç "kod satırı" adanmış olduğunu kontrol etmek ilginç olabilir.
Augusto

Yanıtlar:


9

Hiç de değil - aslında şirketime bir platform olarak Java'ya büyük yatırım yapıyorum (veri madenciliği için SaaS uygulamaları ve araçları geliştiren bir başlangıç).

İşte nedenleri:

  • Java'yı bir platform olarak seçmek, Java'yı dil olarak kullanmanız gerektiği anlamına gelmez. Biz kullanmak Clojure gerektiğinde bazen Java içine bırakarak, birincil uygulama geliştirme dili olarak. Ancak Scala ve Groovy gibi diğer JVM dilleri de harika.

  • Şahsen Oracle için endişelenmiyorum . Java'nın ana uygulaması neredeyse kesinlikle açık kaynak olmaya devam edecektir ( OpenJDK ) ve serbestçe kullanılabilir. Oracle aptalca bir şey yaptıysa, diğer büyük şirketler (özellikle IBM ve Google'ın düşünüyorum), Java'dan kurtulmak için çok fazla yatırım yaptılar ve Oracle'ın yardımı olmadan kolayca Java geliştirmeye devam edebilirler.

  • JVM büyük yürütme ortamıdır . Çapraz platform, çok yüksek performans, son derece iyi optimizasyon JIT teknolojisi. Yerel hıza yeterince yakınım, C / C ++ 'dan daha yavaş olduğu kesirli miktarı umursamıyorum ve bu yük, uygun çöp toplama ve yönetilen bir bayt kodu yürütme ortamı vb.

  • Java, açık kaynaklı kütüphanelerin harika bir ekosistemine sahiptir . Aslında, bunun herhangi bir dilin en iyi ekosistemi olduğunu söyleyebilirim. Bu, altyapı bakımından "ağır kaldırma" işlemlerinin çoğunun, son derece yüksek bir kalitede yapıldığı anlamına gelir. İhtiyacınız olan çoğu şeyin açık kaynak olması, lisans alma maliyetinizin (hem para hem de yönetim süresi açısından) olmadığı anlamına gelir.

  • Eclipse harika bir IDE'dir ve sağlam kurumsal uygulamaların geliştirilmesi için harika bir araç zinciri sağlar. Maven, JUnit, Git / SVN entegrasyonu ve Eclipse eklentileri olarak kullanılabilen bir dizi başka araç kullanıyoruz. Her şey "sadece çalışır".

Son olarak, diğer seçenekler nelerdir?

  • .NET karşılaştırılabilir özelliklere sahip tek platformdur ve ben şahsen C # 'ı seviyorum, ancak sizi Microsoft teknolojilerine kilitliyor (Oracle / IBM IMHO'dan daha kötü) ve aynı açık kaynak ekosistemine sahip değil. Microsoft mağazaları için iyi, ancak kendi teknolojik kaderinizi kontrol etmek istiyorsanız değil. Ve evet, Mono sevimli, ama işimi .NET ana akımıyla çalışma uyumluluğunu koruyabilecek veya sürdüremeyebilecek bir platformda bahse giremem.

  • Sonra, yaptıkları işte çok iyi olan diğer tüm harika diller vardır (örneğin, Ruby, Python, PHP, Javascript), ancak Java platformuna çekici, kapsamlı bir eşdeğer sunmayın. Risk, çok daha az olan güzel bir mimaride birçok şeyi birbirine yapıştırmaya başlamanız gerektiğidir. Web siteleri, hızlı ve kirli uygulamalar oluşturmak için sorun değil, uzun vadeli ürün geliştirme için daha az çekici.

  • C / C ++, sistem programlama ve oyunlar için mükemmeldir, ancak modern web uygulaması geliştirme için çok karmaşık / maliyetli / esnek değildir.

  • Ve sonra Haskell gibi sevdiğim, akademik açıdan harika olan ama güvenilir bir platform seçimi yapmak için gerekli endüstri benimseme / ekosistemine sahip olmayan güzel diller var. Ayrıca JVM üzerinde Clojure çalıştırarak modern fonksiyonel programlama faydalarının çoğunu alabilirsiniz .....

Evet, bu karmaşık bir karardır. Ancak, çok fazla araştırma ve değerlendirmeden sonra Java kararını diğer tüm seçeneklerin üstünde aldım. Bugün hala aynı kararı verirdim.

GÜNCELLEME

Dil seçimi olarak JVM'de Clojure seçimi hakkında birkaç kelime. Bunun için temel motivasyonlar şunlardı:

  • Eşzamanlılık - Clojure'un benzersiz bir eşzamanlılık hikayesi vardır, bazı temel kavramları açıklayan bu videoyu izlerken iyi iş çıkardınız . Yazılım İşlem Belleğini kullanarak çok çekirdekli mimarilere güvenilir bir şekilde ölçeklenebilir . Ve bunu çok fazla ek yük (kilitsiz!) Olmadan yapmayı başarıyor ve bu da oldukça dikkat çekici bir mühendislik başarısı.
  • Fonksiyonel programlama - Clojure, değişmezliği ve üst düzey fonksiyonları vurgulayan fonksiyonel bir dildir. Haskell kadar işlevsel değil, ama her şeyden önce bir FP dilidir. Bazı insanlar bunun daha iyi programlar yazmanıza yardımcı olduğunu söylüyor.
  • Programcı verimliliği - Clojure, Lisp kodlu veri felsefesinin tüm verimlilik avantajlarından yararlanır. Pratikte bu, inanılmaz güçlü makro yetenekleri ve uğraştığınız herhangi bir sorun için kendi DSL'lerinizi tanımlamak için kullanabileceğiniz basit ama son derece esnek bir sözdizimi anlamına gelir.
  • Hızlı geliştirme ve komut dosyası oluşturma için uygun dinamik bir dile ihtiyaç vardır - Clojure standart bir derleme-test-dağıtma döngüsünde kullanılabilir, ancak etkileşimli olarak geliştirmek için bir REPL kullanmak, gittikçe çalışan kod ortamını değiştirmek daha doğaldır. Örneğin, toplu işlerin sonuçlarını görmek için geliştirirken grafikleri çizmek ve verileri anında görselleştirmek için Incanter'ı kullanıyorum .
  • Java ile birlikte çalışabilirlik - Clojure'un Java ile birlikte çalışma özelliği çok etkilidir. Clojure nesneleri Java nesneleridir ve tersi de geçerlidir, bu nedenle ihtiyacınız olduğunda Java API'lerini ve kitaplıklarını çağırmak önemsizdir. Bu size tüm Java kütüphane ve araç ekosisteminin tüm avantajlarını sağlar.
  • İyi topluluk - Clojure'un topluluğu küçük ama dinamik, arkadaş canlısı ve hızlı büyüyor. Incanter (istatistiksel hesaplama) veya Ring / Compojure (web sunucusu çerçevesi) veya Saat Yönünün Tersine (Eclipse IDE eklentisi) gibi birçok büyük açık kaynaklı proje zaten

Mikera, tam da bunu sordum. Şirketiniz Java'yı uygulama geliştirme için birincil dil olarak bırakıyor ve bunun yerine Clojure kullanıyor. Ben JVM edeceğini, size katılıyorum değil özel olarak JVM üzerinde çalıştırılan diğer dillerde yatırım bazı firmalarla kaybolur. Clojure'u ana geliştirme dili olarak kullanma kararının ardında yatan şey hakkında biraz daha bilgi verebilir misiniz?
Augusto

Tabii, neden Clojure'un özellikle (umut verici olan
Scala'yı da düşündüm

Şirketinizin neden clojure kullanmaya karar verdiğine ilişkin açıklama için teşekkürler!
Augusto

7

Her şey müşteriye bağlıdır.

Java her zaman, insanların bir sebepten ötürü ona ya da başka bir yere çekilecekleri kendi küçük nişlerine sahip olacak, sadece aynı nedenlerden dolayı .php veya .net'e yöneliyorlar, ancak sonuçta müşterinin gereksinimlerine ve tercihine bağlı.

Bir müşteri diyorsa ... Bu uygulamanın java olmasını istiyorum ... hayır mı diyeceğiz? Muhtemelen hayır ... eğer gerçekten umursamadığımızı söylerse .... java yazacak mıyız? muhtemelen değil, ama bu sadece spekülasyon.

Java'da uzun süredir geçmişi olan uygulamalarımız var, ancak müşteri her şeyi Windows markasıyla titizlikle değiştiriyor gibi görünüyor .... sql sunucusuna oracle ... sunucu 2008 ile unix / linux ... ve php ve Java ile .net.

Böyle bir şey olursa evet ... yeni bir müşteri gelip hey diyorsa ... java ile yazılmasını istiyoruz ... .net kullanacağız.


Büyük bir ABD otomobil perakendecisi benzer bir şey yapıyor, yeşil alan projelerinin çoğunu Java yerine ruby'de inşa etmeye başlıyor.
Augusto

1

Öncelikle, bir yazılım şirketinde çalışmıyorum.

Tamam, Oracle'ı, üzerinde sakladığımız tüm önemli bilgilerimizle ana veritabanı olarak kullanıyoruz. Bu nedenle, Oracle ile yapılacak her şey için Java'yı kullanmaya devam etmeyi planlıyoruz. Oracle'ın Sun'ı satın alması, Oracle ile ilgili her şey için Java'yı kullanmaya devam etmemiz için bir destek.

Ancak, her şey Windows tabanlı olduğu için herhangi bir masaüstü uygulaması C # ile yazılmıştır.


0

Şirketiniz java'dan başka bir teknolojiye geçiş yapmayı düşünüyor mu?

Sorunuzu cevaplamak için. Hayır.

Her Java geliştiricisinin bildiği gibi ...

Herhangi bir büyüklükteki şirkette, genellikle şirketin Java'dan uzaklaşıp başka bir şeye yönelmesi gerekip gerekmediği gibi konulara karar veren geliştiriciler değildir. Ve bu kararları veren türler için, listeledikleriniz dışındaki faktörler önemlidir.

... özellikle Oracle JVM'den para kazanmak istediğinden, java'nın geleceği oldukça belirsiz görünüyor.

Aksine, geleceğin açık olduğunu düşünüyorum. Java gelişimi yavaş ama istikrarlı bir şekilde devam edecek ve çekirdek SE ve EE teknolojileri ücretsiz olmaya devam edecek. Benim için tek gerçek belirsizlik alanı, Oracle ile Google bunfight arasında ne olacağı. Ama öyle ya da böyle, Android / Davlik'in Java ME'ye alternatif olarak zenginleşmesini bekliyorum ... ama sadece mobil platformlar için.

Dil olarak Java da son birkaç yıldır bayat, kapanışların dahil edilmemesi bir örnektir (java 1.8'e dahil edilebilir).

Bu geliştiricileri rahatsız edebilir, ancak "durgunluk" aslında Sun / Oracle'ın işin ne istediğine dikkat etmesinin bir sonucudur ... uzun vadeli istikrarlı bir dil / platform.

Aynı zamanda, Ruby, Scala ve Groovy gibi bazı yeni teknolojiler karmaşık siteler sunmak için kullanılıyor.

Yine, yönetim açısından jüri, bu teknolojilerin genel olarak daha iyi olup olmadığına karar vermiştir.

  • İddia edilen verimlilik artışları uzun vadede gerçekten kanıtlanabilir mi?
  • Performans henüz orada değil mi? Ölçeklenebilirlik? Üçüncü taraf araçlar ve kütüphaneler?
  • Deneyimli personel alabilirler mi?

Şirket düzeyinde yeni bir dile geçme kararı, özellikle "eski" dilde önemli miktarda mevcut kod varsa, önemli maliyetlere ve risklere sahiptir.


@Augusto - Sorunuzu cevapladım; bkz. ilk cümle. Şimdi mutlu musun?
Stephen C
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.