Yerleşik bir kurumsal ortama yeni bir JVM programlama dili eklenmesi


11

Mevcut iş yerinizin bir Java mağazası olduğunu düşünün. Java dili hakkında çok fazla bilgi birikimi vardır ve her şeyi pürüzsüz ve Çevik bir şekilde ele almak için kapsamlı bir oluşturma ve dağıtım işlemi vardır.

Bir gün, diyelim ki Ruby yazmak için çığlık atan bir proje ortaya çıkıyor. Sadece üst düzey geliştiricilerin Ruby hakkında herhangi bir ipucu var, ancak JRuby'nin JVM için mevcut olduğundan, mevcut altyapının kullanılmaya ve desteklenmeye devam edebileceğine dair genel bir fikir var. Ayrıca, JRuby mevcut uygulamaları daha az kodla uygulamanın daha iyi bir yolunu gösterebilir, böylece bu devam eden bir geçişi temsil edebilir.

JRuby'nin sadece bir örnek olduğunu unutmayın, aynı derecede Clojure veya Groovy veya JVM'de başka herhangi bir şey olabilir.

Soru, bu tür bir değişikliği nasıl ortaya koyacağınızdır - hiç değilse?



1
orada hangi 'Java' dükkan hakkında konuşabiliriz düşünemiyorum gary
Gareth Davis

@Jonas İyi bağlantı - orada çiğnemek için çok.
Gary Rowe

Yanıtlar:


15

Yasal Uyarı: JVM (Shameless Plug !! - İyi Topraklanmış Java Geliştirici) Polyglot programlama hakkında bir kitap yazarken önyargılıyım :)

İlk olarak, değişikliği yalnızca gerçekten garanti edildiği yere getirmelisiniz!

Başlamak için iyi bir yer Ola Bini'nin programlama dili piramidini düşünmektir. Ola, kararlı, dinamik ve alana özgü diller hakkında konuşuyor.

Java kararlı bir dildir (statik olarak yazılır ve yönetilir) ve çeşitli nedenlerle (insanlar ilgileniyorsa bunlara daha sonra girebilirim) dinamik katman projeleri (örneğin Hızlı Web Geliştirme) veya alana özgü katman projeleri (örn. Modelleme) için ideal bir seçim değildir. Enterprise Integration Pattern alanı). Bu katmanlardan birine uyan bir projeniz varsa, başlamak için iyi bir yer olabilir.

Alternatif dilin sunduğu temel bir özellik varsa, Java'nın yerini almak için kararlı katmana yeni bir dil eklemeyi de düşünebilirsiniz. Örneğin, Scala eşzamanlılığı Java'dan daha güvenli ve daha doğal bir şekilde ele alır.

İstendiği gibi, bu konuda biraz daha. WRT Java:

  • Yeniden derleme zahmetlidir
  • Statik yazma esnek olmayabilir ve uzun yeniden düzenleme sürelerine yol açabilir
  • Dağıtım ağır bir süreçtir
  • Java'nın sözdizimi DSL üretmek için doğal bir uyum değildir

Bu noktada kendinize şu soruyu soruyor olabilirsiniz: “Bu katmanların içinde ne tür programlama zorlukları var? Hangi dilleri seçmeliyim? ”, Gümüş mermi olmadığını unutmayın, ancak seçimlerinizi değerlendirirken dikkate alabileceğiniz bazı kriterlerim var.

Alana özgü

  • Derleme / Sürekli Entegrasyon / Sürekli Dağıtım
  • Dev-op
  • Kurumsal Entegrasyon Kalıp Modellemesi
  • İş Kuralları Modellemesi

Dinamik

  • Hızlı Web geliştirme
  • Prototip
  • Etkileşimli yönetim / kullanıcı konsolları
  • Komut
  • Test Odaklı Geliştirme / Davranış Odaklı Geliştirme

Kararlı

  • Eşzamanlı kod
  • Uygulama kapları
  • Temel iş işlevselliği

Küçük bir düşük risk modülü ile başlayın (bu JVM dilleri genellikle mevcut Java koduyla güzelce etkileşime girer) veya projeyle başlayın. Bunun bir atma prototipi olacağını açıkça belirtin.

Bu dil için programlama yaşam döngüsü ve takımlama yönlerini araştırdığınızdan emin olun. TDD yapabileceğinizden, oluşturma araçları ve Sürekli Entegrasyon çalıştırabildiğinizden, güçlü IDE desteğine ve diğer tüm faktörlere sahip olabileceğinizden emin olmak istersiniz. Bazı diller için, bazı takımların orada olmadığını veya çok temel olduğunu kabul etmeniz gerekir. Geliştiricinin gücü ve takım desteği bir dilin gücüne ağır basabilir.

Takıldıklarında ekibinize yardımcı olabilecek canlı bir topluluk olduğundan emin olun. Yerel kullanıcı grupları bunun için daha iyidir.

Özellikle dil OO tarzı bir dil değilse (Clojure'a geçmek önemsiz değildir) geliştiricilerin ilk dil eğitimini aldıklarından emin olun.

Sanırım bu kadar. Kişisel olarak Groovy, Scala ve Clojure'u Java ile birlikte XML işleme, hızlı web siteleri oluşturma ve bazı veri krizi yapma gibi görevler için başarıyla kullandım.


Kapsamlı bir cevap için +1 - özellikle "Clojure'a geçmek önemsiz değil". Dinamik katmana / alana özgü katman seçim ölçütlerinde biraz genişlemeyi takdir ediyorum. Kitap ile iyi şanslar!
Gary Rowe

@Gary Rowe - Seçim kriterlerini biraz genişleteceğim, 10-15 dakika sonra tekrar kontrol edeceğim :)
Martijn Verburg

@Martin Ek bilgi için teşekkürler, çok takdir ediyorum.
Gary Rowe

Büyük cevap Martijn, çok detaylı ve iyi düşünülmüş. Belki de bu konuda bir kitap yazmalısın! ;)
Rein Henrichs

@Rein, iyi itiraf etmeliyim ki, bu soruyu tartışmak için yazılmış bölüm 7'nin bir kısmını yorumlayabiliyorum;)
Martijn Verburg

3

"Eğer" yorumuyla ortaya konulan konu hakkında bazı düşünceler eklemek istiyorum. Gerçekten de, ekibe neden ek diller sunulmalıdır? Doğru, sadece herhangi bir projeye bakıyorsanız, yeni dil görev için ideal bir araç olarak ortaya çıkabilir. Ancak, çok fazla projeniz olacaksa, zamanla birkaç ek dil daha kullanabilirsiniz. Bakım döngülerinizi ve proje numaralarınızı bilmiyorum, ancak ekibin eskisinden daha fazla dilde oldukça fazla uzmanlık sunması gerekecek.

İş açısından bakıldığında dil eklemek, ekibe karmaşıklık ve bilgi gereksinimleri eklemek anlamına gelir. Bu, mesleki ayarlama dönemlerini uzatır, ekibinizdeki uzmanların tatil temelli (veya kalıcı) değişikliklerini zorlaştırır ve ekip üyeleri için ek eğitim gerektirir, bu da kısa vadede yavaşlama anlamına gelir.

Gözlerime göre, tanıtımı memnuniyetle karşılayacak bir strateji, bu tür sorunları tamamen işlevsel yönlerden ayrı olarak ele almalıdır. Beklenen kazanç ekstra sorun ve yukarıda bahsettiğim gibi dezavantajlara değer mi? Eğer bu kanıtlanabilirse, kabul oranları çok daha yüksek olabilir. Ekip üyelerinin niteliğine yapılan bu güzel yatırımlara dikkat etmek de yardımcı olabilir.


2

Söylemeliyim, kenarlardan başla. Derleme komut dosyaları, maven eklentileri, rapor çalışması vb.

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.