1.1 Büyük programlar

Küçük programları nasıl yazacağımızı zaten öğrendik, bu yüzden şimdi büyük programları nasıl yazacağımızı öğreneceğiz. Bildiğiniz gibi, program ne kadar büyük ve karmaşıksa, geliştirilmesi için o kadar çok para ödenir :) Ve biraz arka planla başlayalım ...

Programların boyutu büyüdükçe, geliştiriciler iki yeni zorlukla karşılaşır:

  • Aynı program üzerinde çok sayıda insan çalışıyor.
  • Programın tüm kodunu bilecek böyle bir kişi yok.

Çoğu zaman, bir programcı programın bir yerindeki bir hatayı düzelttiğinde ve aynı zamanda başka bir yerde bir şeyi bozduğunda durumlar ortaya çıkmaya başladı. Sürüm belgelerinde şu şaka bile var:

Değişiklik listesi:

  • Eski hatalar düzeltildi :)
  • yenileri eklendi :(

Daha sonra bu sorunu çözmek için iki yaklaşım geliştirdiler: teknik ve yönetimsel.

Teknik yaklaşım, programların bölümlere ayrılmasıydı: kitaplıklar ve modüller . Bu tür modüllerin her biri, daha sonra büyük projelerin inşa edildiği küçük bir tuğlaydı. Kitaplıklar, farklı programlarda kullanılabilen evrensel bileşenlerdir.

Yönetsel yaklaşım daha da ilginçti - bir proje/kütüphane üzerinde çalışabilecek insan sayısını sınırladılar. Ampirik olarak, bir kural bile buldular: ekip o kadar büyük olmalı ki "iki pizzayla doyurulabilir . " Bu genellikle, bir projede 8'den fazla kişi çalışıyorsa , o zaman projenin iki projeye bölünmesi gerektiği anlamına gelir.

Java geliştirici topluluğunda tüm durumlar için kitaplıklar yazmak ve bunları herkesin kullanımına sunmak popüler hale geldi. Bu nedenle, Java programcıları (genellikle ham olan ve hatalar içeren) aynı kodu tekrar yazamazlar, bunun yerine hazır ve kanıtlanmış çözümler kullanırlar .

Ek bir teşvik, Java dilinin sunucu tarafı çözümler yazarken büyük popülerlik kazanmasıydı (arka uçta çalıştı). İlk olarak, sunucu yazılımının güvenilirlik için daha yüksek gereksinimleri vardır ve zaman içinde test edilmiş kitaplıkları kullanmak her zaman kendi kodunuzu yazmaya tercih edilir.

İkinci olarak, sunucuların kodun boyutu konusunda neredeyse hiçbir sınırı yoktur. Bir mobil uygulamanın geliştiricisi, onu 10 megabayta, bir masaüstü uygulamasını - 100 megabayta sıkıştırmaya çalışır. Ve bir Java arka uç geliştiricisi, onlarca gigabaytlık kitaplığı bir projeye sıkıştırabilir ve kimse ona tek kelime bile etmez :)

Bu arada, bu bir şaka değil. Birkaç düzine modül ve birkaç yüz kitaplık içeren bir arka uç projesine kolayca rastlayabilirsiniz. Ancak bu tür projeler için derleme betiklerini tanımlamak (ve değiştirmek!) son derece zor hale geldi.

Ve sonra Maven ortaya çıktı.

1.2 Maven'e Giriş

Maven, proje oluşturma yönetimi için özel bir "çerçevedir". 3 şeyi standartlaştırır:
  • Projenin tanımı;
  • Proje oluşturma betikleri;
  • Kitaplıklar arasındaki bağımlılıklar.

Maven'in selefi Ant'ti ve halefi Gradle'dı . Ancak listelenen üç standardı geliştirip mükemmelleştiren ve aynı zamanda etkileşimlerini düzenleyen Maven'di. Java topluluklarının çalışmalarını yeni bir seviyeye getiren oydu. Daha ayrıntılı olarak bakalım.

Uzman

Teknik olarak Maven, temel amacı proje oluşturma sürecini yönetmek olan özel bir program / hizmettir . Bir arşiv olarak kolayca indirilebilir ve herhangi bir dizine açılabilir. Bunun için özel bir yükleyiciye ihtiyacınız yok.

Grafik arayüzü yok - tüm komutlar ona konsol kullanılarak veriliyor . Onunla çalışmayı daha da rahat hale getirmek için işletim sisteminize özel ortam değişkenlerini kaydetmeniz önerilir.

Maven ayrıca proje oluştururken kullandığı kitaplıkları sakladığı özel bir depoya (dizin / klasör) sahiptir. Diskte bir klasör seçmeniz ve onu bir havuz olarak atamanız gerekecek.

Bir başka ilginç şey de tüm kütüphaneler için küresel bir Maven deposunun varlığı, ancak bundan biraz sonra bahsedeceğiz.

1.3 Maven'i indirin ve kurun

Maven'in resmi bir sitesi var maven.apache.org . Projeyle ilgili çok sayıda belge var, bu nedenle herhangi bir zorluk veya başka sorunuz varsa - gelin, utangaç olmayın.

Ayrıca indirme sayfasında ( https://maven.apache.org/download.cgi ) maven arşivini (apache-maven-3.8.5-bin.zip) indirebilirsiniz. Paketlenmemiş arşiv yaklaşık 10 MB yer kaplayacak, ancak yerel maven deposu sonunda birkaç yüz megabayt bellek gerektirecek.

Maven, Java ile yazılmıştır ve JRE'nin en az 7. sürümünün yanı sıra tanımlanmış Java_HOME ortam değişkenlerini gerektirir.

Bilgisayarınızda Maven için bir klasör oluşturun, örneğin, d:\devtools ve Maven ile birlikte arşivi bu klasöre çıkarın. Sonuç olarak, projenin ana ikili dosyalarının yer alacağı d:\devtools\maven\bin gibi bir klasör almalısınız .

1.4 Ortam değişkenleri

Bundan sonra, paketlenmemiş arşivden bin klasörüne giden yolu PATH ortam değişkenine eklemeniz gerekir.

Windows 10'da ortam değişkenini ayarlamak için Denetim Masası - Sistem - Gelişmiş sistem ayarlarına gitmeniz gerekir. Ardından "Ortam Değişkenleri"ne tıklayın, PATH'i bulun ve "Düzenle"yi seçin, ardından d:\devtools\maven\bin yolunu satırın sonuna ekleyin. Dikkat edin, yol tam olarak bin klasörüne gitmelidir.

Unix tabanlı bir işletim sisteminde, ortam değişkeni bir konsol komutuyla eklenebilir:

export PATH=/opt/apache-maven-3.8.5/bin:$PATH

Her şeyi doğru yaptıysanız, konsolda "mvn -v" komutunu yazmanız gerekir. Yanıt olarak, şöyle bir şey göreceksiniz:

C:\Users\Zapp>mvn -v
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 15:51:28+0200)
Maven home: T:\apache-maven-3.0.5\bin\..
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_65\jre
Default locale: en_US, platform encoding: Cp1251
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"

1.5 Yerel Maven Deposu

Maven'in proje oluştururken kullanacağı jar kitaplıklarını saklayacağı özel bir klasör de ayarlayabilirsiniz. Bu klasöre yerel maven deposu denir .

Böyle bir klasör belirtilmezse, Maven onu geçerli kullanıcının ana dizininde oluşturacaktır. Dizinim: C:\Users\Zapp\.m2

Klasörün oldukça özel bir adı “.m2” var. Linux kullanıcılarını korkutmasa da - çeşitli "havuzları" ve / veya diğer herhangi bir hizmet bilgisi deposunu adlandırmak için oldukça yaygın bir yaklaşım var.

Önemli! Çalışma sırasında bu klasörlere yazma izinleri gerektireceğinden, antivirüs veya işletim sistemi için sağlıksız bir ilgiye neden olabileceğinden, Maven'i sistem klasörlerine yerleştirmeyin.

3.5 sürümünden önceki Maven, M2_HOME adlı bir ortam değişkeni gerektiriyordu, ancak bu artık gerekli değil.

Maven'i yapılandırma hakkında daha fazla bilgiyi şu bağlantıdan okuyabilirsiniz: https://maven.apache.org/configure.html