JUG İstanbul Java Ekosistem Raporu 2019

Geçtiğimiz günlerde JUG İstanbul meetup ve twitter hesabı üzerinden topluluğumuzla bir anket paylaştık. Bu anketle neyi amaçladığımıza gelmeden önce kısaca anketin hikayesini paylaşmak istiyorum.

 

İLHAMIMIZ

Londra bilişim dünyası için son yıllarda canlılık ve hareketliliği gözle görülür biçimde artan önemli bir merkez haline geldi. Özellikle start-up’ların başkentlerinden biri olduğunu söylersek abartmış olmayız. Pek çok etkinliğe de ev sahipliği yapan Londra’da büyük ve dinamik bir Java topluluğu söz konusu. JUG İstanbul olarak diğer JUG ve Java topluluklarını Java dünyasında olup bitenleri ıskalamamak adına takip etmeye çalışıyoruz. Bu bağlamda LJC(London Java Community) de takip ettiğimiz topluluklardan biri. LJC Ağustos ayında meetup sayfaları üzerinden topluluklarıyla bir anket paylaştı ve özetle Java’nın yeni sürümleri ve Java dünyasının gündeminde olan çeşitli konulara dair fikirlerini almak istedi. Biz de yararlı gördüğümüz böylesi bir etkinlikten ilham alarak benzer bir çalışmayı topluluğumuzla gerçekleştirmek istedik.

 

HANGİ SONUÇLARA ULAŞMAYI AMAÇLADIK?

Araştırmamızda, katılanların profiline dair bilgi talep eden sorular hariç tutulursa toplamda 27 soru yönelttik. Bu 27 soruyla temelde yanıt aradığımız 4 ana soru şunlardı:

  • Java’nın yeni sürümlerini benimsiyor musunuz?
  • Hangi Java dağıtımını kullanıyorsunuz?
  • Support için para ödemeye hazır mısınız?
  • Enterprise Java ile ilişkiniz hangi düzeyde?

Aldığımız yanıtlarla bu 4 temel soruda topluluğumuza dair önemli bir fotoğraf çektiğimizi düşünüyoruz.

 

YANITLARIN ANALİZİ

Yanıtlara geçmeden, araştırmamıza katılanların profiline bir göz atalım.

Katılımcılarımızın ağırlıklı olarak yazılım geliştiricisi olduklarını, takım lideri, proje yöneticisi ve mühendis rolündeki katılımcıların toplamda %32.8’lik bir dilime tekabül ettiğini görüyoruz. Yanıtları analiz ederken bu dağılımı gözönünde bulundurduk.

 

KARGO KÜLTÜ

Cargo cult terimi, bir süreci ya da sistemi anlamaksızın, en dışsal, en yüzeysel görünümlerini tekrar ve taklit ederek yeniden üretmeye çalışmayı ifade etmektedir. Anket yanıtlarını incelediğimizde yer yer kargo kültü efekti ile karşılaştığımızı ifade etmeliyim. Örneğin, anket katılımcılarına yönelttiğimiz ilk soru bu efekti gördüğümüz sorulardan biriydi.

“Uygulamalarınız şu anda hangi JDK üzerinde koşuyor?” sorusuna katılımcıların %57.8’i Oracle JDK yanıtını vermiş. Bu yanıtta kargo kültü etkisi görme sebebimiz “Şu anda JDK desteği için bir satıcıya ödeme yapıyor musunuz?” sorusuna %89.1 oranında hayır, “Gelecekte JDK desteği için ödeme yapmayı düşünür müsünüz?” sorusuna ise %57.8 oranında hayır, %18.8 oranında belki yanıtının verilmesi. Gelecekte JDK desteği için kesin bir dille ödeme yapmayı düşünmediklerini söyleyenler içinde rolü yazılım geliştirici olmayanların oranı %37.83. 

JDK desteği için gelecekte ödeme yapabileceğini ifade edenler içinde rolü yazılım geliştirici olmayanların oranı ise %50. Bu kitle içinde rol ağırlığı mühendis olarak görülüyor.

 

BİRBİRİMİZE ZAMAN TANIYALIM 

Uygulamalarınız için üretimde hangi Java SE sürümünü kullanıyorsunuz?” sorusuna katılımcılarımız %71.9 oranında Java 1.8 yanıtını vermiş. Görünen o ki Java 8 hala en baskın version. Java 9 kullandığını belirtenlerin oranı %6.3 iken, Java 11 kullananların oranının %7.8 olduğunu görüyoruz. Bu iki version arasında kalan Java 10 için kullanım oranı ise %1.6’da kalmış. Bu durumu, Java 10 ile gelen ve geliştiriciyi doğrudan etkileyen yeniliklerin sınırlı olmasıyla açıklayabileceğimizi düşünüyoruz. Sonuç itibariyle, söz konusu oranlardan anlaşılan, yeni Java sürümlerinin henüz tam olarak benimsenmediği. Yanıtlarda dikkat çeken bir diğer nokta, Java 1.6 ya da daha eski seçeneğinin %6.3 oranına sahip olması. Bu yanıtı verenler arasında rolü yazılım geliştirici olan yok.

Daha yeni bir sürüme geçmeme nedeni olarak ağırlıkla(%54.7) mevcut sürümün gayet iyi çalıştığı yanıtı verilmiş. Bu noktada “çalışıyorsa dokunma” prensibine güçlü bir bağlılık gözleniyor, ek olarak güncelleme maliyeti ve yeni sürümün ihtiyaç içeren bir yenilik getirmediğini söyleyenlerin de azımsanmayacak oranda olduğunu belirtebiliriz.

 

HAVET

Yazılım güvenliği kuşkusuz geliştiricisinden takım liderine, proje yöneticisine sektörde herkes için önemli bir konu ancak anketimizde aldığımız yanıtlara bakınca “güvenlik sizin için önemli mi?” gibi gizli bir soruya katılımcılarımız havet yanıtı vermiş görünüyor.

JDK’nın yeni sürümlerini üretimde benimsemede hangi tutuma sahipsiniz?” sorusuna %53.1 oranında uzun süreli destek(TLS) sürümleri ile kalmak yanıtı verilmiş. Sonrasında oransal olarak en yüksek yanıt %32.8 ile Release temelinde, özelliklere bağlı olarak karar vermek olmuş. 

Bu yanıtlar havet’in evet kısmı, hayır kısmı “Kritik JDK güvenlik güncellemelerini ne kadar çabuk uygularsınız?” sorusuna alınan yanıtlarda görülüyor.

Evet, doğru görüyorsunuz, soruya %34.4 oranında(en yüksek) uygulamıyoruz yanıtı verilmiş ve bu yanıtı verenlerin %22.72’sinin mevcut rolü yazılım geliştirici değil. %17.2 oranıyla Release tarihinden itibaren 1 hafta içinde yanıtı verenler dışında kalanlar ise kritik güvenlik güncellemelerini en az 1 ay ötelediklerini ifade etmiş. Anket katılımcılarımıza “Nerede ne zaman bağımlılıklarınızı bilinen güvenlik açıkları için gözden geçirirsiniz?” sorusunu da yönelttik, aldığımız yanıtların yukarıdakilerle parallelik gösterdiği görülüyor.  

Elbette her bir yanıt ve sahip olduğu oran bize bir şeyler söylüyor ancak hiçbir zaman ve bilmiyorum yanıtlarının toplamda %42.2’lik bir orana tekabül etmesi, bu soruda katılımcıların birden fazla seçeneceği tercih edebildiği dikkate alınsa dahi düşündürücü. 

 

BENİM İÇİN SENDEN BAŞKASI YALAN

JVM başlangıçta yalnızca Java programlama dilini desteklemek için tasarlanmıştı ancak geçen zaman içinde daha fazla dil JVM’e uyarlandı veya tasarlandı. Bugün JVM Scala, Kotlin, Ceylon, Groovy gibi pek çok dili destekliyor. Bu sebeple “Uygulamalarınız için ana JVM diliniz nedir?” sorusunu yönelttik, aldığımız cevap %96.9 oranında Java oldu.

Yukarıdaki grafikte gördüğünüz gibi Java dışında farklı JVM dili olarak bir tek Kotlin yanıtı %3.1 oranında alınmış. Android platformu için mobil geliştirim yapılıyor olmasa farklı bir JVM dili ile hiç teşriki mesaimiz olmayacak gibi görünüyor. Burada şaşırtıcı bulduğumuz bir diğer nokta, kotlin yanıtı verenler içinde mevcut rolü yazılım geliştirici olan kimsenin bulunmayışı. Kotlin yanıtını verenlerin mevcut rolleri %50 oranında takım lideri ve proje yöneticisi.

 

MODÜLE MODÜL DEMEM MAVEN MODÜLÜ OLMAYINCA

Araştırmamızda cevabını aradığımız temel sorulardan birinin Java’nın yeni sürümlerinin ne oranda benimsendiği olduğundan bahsetmiştik. Bu kapsamda “Java uygulamalarınızda Java modüllerini kullanıyor musunuz veya kullanmayı planlıyor musunuz?” sorusunu yönelttik.

Kullanıyoruz yanıtının oranı %51.6 oysa “Uygulamalarınız için üretimde hangi Java SE sürümünü kullanıyorsunuz?” sorusuna %6.3 oranında Java 9 yanıtı verilmişti. Burada Java 9 modülleriyle muhtemelen maven modüllerinin karıştırılmış olduğunu tahmin ediyoruz. Bu sonucu bizim için daha çarpıcı hale getiren şey, her iki soruda rolü yazılım geliştirici olmayanların yüksek oranı. Üretimde Java 9 kullandıklarını belirtenlerin %50’si yazılım geliştirici iken, “Java uygulamalarınızda Java modüllerini kullanıyor musunuz veya kullanmayı planlıyor musunuz?” sorusuna yanıt verenler arasında rolü yazılım geliştirici olmayanların oranı %45.45.

 

SARI SAÇLARINI DELİ GÖNLÜME BAĞLAMIŞIM ÇÖZÜLMÜYOR

Spring Framework’ün topluluğumuzda yaygın bir kullanıma sahip olduğunu kestirmek zor değil ancak yine de araştırmamız sonucu ortaya çıkan biçimde bir baskınlığın bizi bir nebze de olsa şaşırttığını belirtmeliyiz. “Spring Framework kullanıyor musunuz?” sorusuna katılımcılarımızın %82.8’i evet yanıtı vermiş.

Soruya evet diyenler içinde rolü yazılım geliştirici olanların oranı %58.49 iken, hayır diyenler içinde aynı role sahip olanların oranı %63.63.

Topluluğumuzun Enterprise Java ile ilişkisiyle birlikte, Spring’in bu yaygın kullanımında kargo kültü etkisinin izini sürmek için “Enterprise Java kullanıyor musunuz?” sorusunu yönelttik ve cevap opsiyonları arasına “Evet, Spring veya diğer bir framework üzerinden”i ekledik. 

Görüldüğü üzere aldığımız yanıtlarda Enterprise Java ile topluluğumuzun ilişkisi ağırlıklı olarak Spring veya diğer bir framework üzerinden sağlanmış görünüyor. Evet, doğrudan yanıtı veren katılımcıların %45.45’i yazılım geliştirici dışında bir role sahip.

 

NE İÇİNDEYİM ZAMANIN NE DE BÜSBÜTÜN DIŞINDA

Topluluğumuz Java dünyasındaki güncel ve gündem konularla ne kadar ilgili? Bunu öğrenmek adına JavaX ad alanıyla ilgili tartışmalara ne tepki verdiklerini sorduk. 

Katılımcılar arasında %45.3 gibi azımsanmayacak oranda bir kitlenin konudan haberdar olmadığı görülüyor. Konudan haberim yok yanıtı verenler içinde mevcut rolü yazılım geliştirici olanların oranı ise %65.52. Bir sonraki soruya aldığımız yanıtlardan, yine azımsanmaycak bir kitlenin JavaX ad alanıyla ilgili muhtemel değişikliklerin olası etkilerine dair sağlıklı bir fikre sahip olmadığı görülüyor.

Bu soruya sanmıyorum yanıtı verenler içinde rolü yazılım geliştirici olanların oranı %68.

 

INTELLIJ, MAVEN, JENKINS, SİZ BU ALEMDE BİRTANESİNİZ 

Katılımcılarımıza hangi ide, derleme ve CI aracı, kod deposunu kullandıklarını da sorduk. İşte aldığımız yanıtlar.

Ağırlıklı olarak, JDK desteği için ödeme yapmayan ve yapmayı da düşünmeyen katılımcı kitlemizin, ihtiyaç duyduğu geliştirme ortamı için ödeme yapmaktan çekinmediğini, çekinmeyeceğini “Hangi IDE’yi kullanıyorsunuz?” sorusuna %60.9 oranında IntelliJ IDEA Ultimate (Ücretli) yanıtı verilmesi üzerinden okuyabiliyoruz. “Uygulamalarınız için hangi derleme aracını kullanıyorsunuz?” sorusuna baskın biçimde maven, “Hangi CI sunucusunu kullanıyorsunuz?” sorusuna ise jenkins yanıtlarının verilmesini şaşırtıcı bulmamakla birlikte, “Uygulamalarınız için hangi kod deposunu kullanıyorsunuz?” sorusunda GitHub (public) ve GitLab (public) için toplamda %9.4’lük bir oranda kalınmasını açık kaynak kültürü noktasında eksikliğimizin dışa vurumu olarak okumak durumunda kaldık.

 

SONUÇ

Büyük ve dinamik bir topluluğuz, güçlü yanlarımız olduğu gibi, zayıf kalmış geliştirilmesi gerereken yanlarımız da var. Bu çalışmanın bu noktada önemli bir fotoğraf çektiğini düşünüyoruz. Aldığımız bazı yanıtlarda kargo kültü etkisi gördük, neden/niçin sorusunu yönelttiğimizde geçerli bir sebep sunulacağından kuşku duyduğumuz, tekrar ve taklide dayalı davranış/tercihler gözledik. Test güdümlü yazılım süreci eksikliğinin, güvenlik temelli sorularda kendisini belirgin biçimde ortaya koyduğunu düşünüyoruz. JVM ve yeni Java sürümleri odaklı sorularda bir derinlik problemimiz olduğu net biçimde görülüyor. Enterpise Java ile ilişkimizin ağırlıklı olarak frameworkler üzerinden olması da bu kapsama dahil edilebilir. Sonuçlar, Java dünyasında olup bitenlere biraz daha yakından bakmamız ve son olarak, açık kaynak dünyasında daha görünür olmamız gerektiği bize fısıldıyor.

 

No Comments

Post a Comment

Comment
Name
Email
Website