İçeriğe atla

Apache Ant

Apache Ant
Geliştirici(ler)Apache Yazılım Derneği
Güncel sürüm1.9.3 / Aralık 2013
Programlama diliJava
İşletim sistemiTüm platformlar
Türİnşa aracı
LisansApache Lisansı 2.0
Resmî sitesihttp://ant.apache.org
Kod deposu Bunu Vikiveri'de düzenleyin

Apache Ant, yazılım inşası süreçlerini otomatikleştirmeye yarayan bir araçtır. Make'e benzeyen uygulama, Java ile geliştirilmiş olup Java platformunu gerektirmekte ve Java projelerinde sıkça kullanılmaktadır.

Ant ve make arasındaki en belirgin fark, Ant'in inşa süreci ve bağımlılık tanımları için XML kullanmasıdır. Make ise kendine özgü dosya biçimi olan Makefile'ı kullanır. XML dosyasının öntanımlı adı build.xml'dir.

Bir Apache projesi olan Ant, açık kaynak kodlu bir yazılımdır. Ant, Apache Yazılım Lisansı'nı kullanmaktadır.

Tarihçe

Ant, James Duncan Davidson'ın bir Sun ürününü açık kaynak kodlu bir yazılıma dönüştürmeye çalışması sonucu ortaya çıkmıştır. Sun'ın deyimiyle JSP/Servlet motoru olan bu yazılım daha sonra Apache Tomcat olarak anılmaya başlamıştır. Make'in ticari sürümü kullanılarak Solaris işletim sistemi üzerinde hazırlanan yazılımın açık kaynak kodlu uyarlamasının hangi platform kullanılarak inşa edildiğini bulmak olanaksızdı. Bu nedenle Ant, bir XML "inşa dosyası"ndaki yönergeleri kullanarak Tomcat'i inşa etmek üzere kullanımı kolay bir arayüzle hazırlanmıştır. Bu sessiz başlangıcın ardından Ant zaman içinde gelişerek Tomcat dışındaki ürünlerin inşasına da izin vermeye başlamıştır. Ant'in 1.1 sürümü 19 Temmuz 2000 tarihinde bağımsız bir ürün olarak piyasaya sürülmüştür. Ant, bugün geliştirilen çoğu Java projesinde inşa aracı olarak kullanılmaktadır.[1] Çoğu açık kaynak geliştiricisinin build.xml dosyasını dağıtım paketinde bulunduruyor olması bu duruma iyi bir örnektir.

Ant'in JUnit denemelerini inşa sürecine tümleştirmede sağladığı kolaylıktan ötürü geliştiriciler kendilerini deneme tabanlı geliştirme ve uç programlamaya daha kısa sürede uyarlayabilmektedirler.

Java tabanlı diğer inşa araçları Maven ve JavaMake'tir.[2]

Ürünün adı İngilizce "Another Neat Tool" (Bir Başka Harika Araç) söz öbeğinin kısaltmasıdır.[3]

Örnek build.xml dosyası

Yalın bir "Merhaba Dünya" uygulaması için yaratılan örnek build.xml dosyası aşağıda gösterilmektedir. Dosya, her biri farklı bir tanıma sahip dört hedef barındırmaktadır. Bunlar; clean, clobber, compile ve jar olarak adlandırılmaktadırlar. Jar hedefi compile hedefini bir bağımlılık olarak nitelendirmektedir. Bu, Ant'in jar hedefine geçmeden önce compile hedefini tamamlaması gerektiğini belirtmektedir.

<?xml version="1.0"?>
<project name="Merhaba" default="compile">
    <target name="clean" description="geçici dosyaları sil">
        <delete dir="sınıflar"/>
    </target>
    <target name="clobber" depends="clean" description="tüm yapay dosyaları sil">
        <delete file="merhaba.jar"/>
    </target>
    <target name="compile" description="Java kaynak kodunu sınıf dosyalarına derle">
        <mkdir dir="sınıflar"/>
        <javac srcdir="." destdir="sınıflar"/>
    </target>
    <target name="jar" depends="compile" description="uygulama için bir jar dosyası oluştur">
        <jar destfile="merhaba.jar">
            <fileset dir="sınıflar" includes="**/*.class"/>
            <manifest>
                <attribute name="Ana-Sınıf" value="MerhabaProgramı"/>
            </manifest>
        </jar>
    </target>
</project>

Her hedef, Ant'in o hedefi tamamlaması için gereken eylemler içermektedir. Örneğin, compile hedefinin tamamlanabilmesi için Ant önce "sınıf" adında bir dizin yaratır (bu dizin daha önce yaratılmış değilse) ve daha sonra Java derleyicisini işletir. Bu hedef için kullanılan görevler mkdir ve javactır. Bu görevler, komut satırından çalıştırılan adaşlarına benzer işlevlere sahiptirler.

Bu örnekte kullanılan bir diğer görev ise jardır.

 <jar destfile="merhaba.jar">

Bu görev, Java komut satırı aracı JAR'la adaştır ancak yalnızca Ant programının varsayılan jar/zip dosya biçimi desteğine yapılan bir çağrıdır.

Birçok Ant görevi kendi işlerini dış programlara devretmektedirler. Bunlar, Ant'in <exec> ve <java> görevlerini kullanarak inşa dosyasından gerekli bilgileri çekmekte, dış programın alacağı parametreleri hesaplamakta ve bu programlardan dönen değerleri yorumlamaktadırlar.

Eklentiler

WOProject-Ant,[4] Ant için yazılmış görev eklentilerinden yalnızca biridir. Bu eklentileri kullanmak için jar dosyalarını Ant'in lib dizinine kopyalamak gerekir. Böylece, bu görevler doğrudan build.xml dosyası içinde çağrılabilmektedirler. WOProject eklentileri WebObjects geliştiricilerinin Ant'i kendi uygulamalarını inşa etmek amacıyla kullanmalarına izin vermektedir.

Antcontrib,[5] koşullu tümceler ve farklı veri türleri üzerinde işletilebilen görevlerden oluşan bir seçkidir.[5]

Perforce, .Net, EJB ve dosya sistemleriyle ilgili görev eklentileri de bulunmaktadır.[6]

Taşınabilirlik

Ant'in başlıca amaçlarından biri make'in taşınabilirlik sorunlarını çözüme kavuşturmaktı. Makefile dosyalarında bir hedef yaratmak için gerekli eylemler platforma bağımlı kabuk komutlarını içeriyordu. Ant, bu sorunu birçok platformda aynı ölçüde başarım gösterebilen uyarlamalara sahip olmasıyla çözmektedir.

Örneğin, yukarıdaki build.xml dosyasında clean hedefi, sınıflar dizinini ve bu dizin içerisindeki tüm dosyaları silmektedir. Özdeş bir hedefi Makefile'da tanımlamak için aşağıdaki komut kullanılmalıdır.

rm -rf siniflar/

rm, Unix'e özgü bir komuttur ve Unix dışındaki sistemlerde (örneğin Microsoft Windows'ta) çalışmayacaktır. Bu hedefi Ant'te yaratmak ise daha kolaydır.

 <delete dir="sınıflar"/>

Farklı platformlar arasındaki en büyük tutarsızlık dizin yollarının saklanma biçimidir. Unix, bir yolun bileşenlerini birbirinden ayırmak amacıyla düz slash (/) kullanırken Windows, aynı işlevi ters slash (\) ile görür. Ant inşa dosyaları, dizin ve yol ayraçlarını kullanıcının isteğine bırakmıştır. Kullanılan her ayraç, platforma uygun biçime dönüştürülmektedir.

Kısıtlamalar

  • Ant inşa dosyalarının XML ile yazılıyor olması bu dile yabancı kullanıcıların kendilerini programı kullanmaya uyarlamalarını güçleştirebilir. Antidote adında bir GUI uygulaması bu sorunu kısa süre için ortadan kaldırmıştı ancak bu programın yeni sürümleri üretilmemiştir. Ant'in kullandığı dilin gereksiz ayrıntılara yer veriyor oluşu karmaşık projelerin inşa dosyalarının boyutunu çok artırmakta, bu da okunabilirliği azaltmaktadır. Maven gibi diğer inşa araçları genelgeçerlik ve esneklikten ödün vermekte, buna karşılık yüksek başarımlı betikler kullanmaktadırlar.
  • Sıklıkla kullanılan görevler (<javac>, <exec>, <java>, vb.) yeni görevlerle uyumlu olmayan öntanımlı parametreleri kullanmaktadırlar. Bu öntanımlı değerlerin değiştirilmesi kimi görevlerin çalışmamasına neden olabilir.
  • Bir karakter dizisi ya da metin elementine tanımsız özellikler eklenmeye çalışıldığında hata verilmemektedir. Ant'in hata denetimi de oldukça kısıtlıdır.
  • Ant hedef modeli, yapay dosyaları hedef olarak algılamamaktadır. Çoğu inşa aracında oluşturulan yapay dosyalar (program, kütüphane, ara nesne dosyası, PDF belgelemesi, vb.) hedef yerine geçmekte, hedefler ve görevler arasındaki bağımlılıklar belirli kurallarla tanımlanmaktadır. Ant'te ise hedef, bir yapay dosya yerine birkaç görevden oluşan öbeğe verilen addır. Bu, Ant'in bir yapay dosyayla bu yapay dosyayı oluşturmaya yarayan görevleri zaman zaman ayırt edememesi anlamına gelmektedir. Bu denetim, programcının sorumluluğuna bırakılmıştır.
  • Tanımlı bir özellik hiçbir görev tarafından değiştirilememektedir. Antcontrib 1 Ekim 2011 tarihinde Wayback Machine sitesinde arşivlendi., bu sorunu çözmeye yarayan bir değişken görev 16 Şubat 2009 tarihinde Wayback Machine sitesinde arşivlendi. sunmaktadır.
  • Varolan bir inşa dosyasının yeniden kullanımı oldukça güçtür. 1.6 sürümünde eklenen <import> ve <macrodef>'in ise kullanım kolaylığını artırıp artırmadığı kuşkuludur.

Bu kısıtlamaların bir bölümü güncel Ant sürümleri için geçerli olmayabilir. Ayrıca, NetBeans IDE kendi inşa sisteminde Ant kullanmakta ve IDE bünyesindeki Ant kullanımını kolaylaştırmaktadır (NetBeans ile üretilen Ant betikleri IDE dışında kullanılabilmektedirler).

Ayrıca bakınız

  • İnşa otomasyonu
  • Maven
  • Nant, Java yerine .NET ortamı için geliştirilmiş bir uygulama

Bibliyografya

Kaynakça

  1. ^ Uç Programlama İçin Java Araçları, Wiley, 2002: 76
  2. ^ "Java Dili İçin Geliştirilmiş Bir Make Aracı". 7 Ocak 2009 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Şubat 2009. 
  3. ^ Bu Neden Ant Olarak Anılıyor? 27 Aralık 2017 tarihinde Wayback Machine sitesinde arşivlendi., Apache Ant SSS
  4. ^ "WOProject-Ant - WOProject / WOLips". 8 Ocak 2009 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Şubat 2009. 
  5. ^ a b "Ant-Contrib Görevleri". 1 Ekim 2011 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Şubat 2009. 
  6. ^ "Ant Görevlerine Bir Bakış". 30 Temmuz 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Şubat 2009. 

Dış bağlantılar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">JavaScript</span> programlama dili

JavaScript, HTML ve CSS ile birlikte World Wide Web'in temel teknolojilerinden biri olan programlama dilidir. Web sitelerinin %97'sinden fazlası, web sayfası hareketleri için istemci tarafında JavaScript kullanırlar ve kullanılan kodlar genellikle üçüncü taraf kitaplıkları içerir. Tüm büyük web tarayıcılarında, kaynak kodunu kullanıcıların cihazlarında yürütebilmek için özel bir JavaScript motoru bulunur.

<span class="mw-page-title-main">Java</span> açık kaynak kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen bir programlama dili

Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kaynak kodlu, nesneye yönelik, platform bağımsız, yüksek verimli, çok işlevli, yüksek seviye, hem yorumlanan hem de derlenen bir dildir.

<span class="mw-page-title-main">PHP</span> bir programlama dili

PHP: Hypertext Preprocessor, internet için üretilmiş, sunucu taraflı, çok geniş kullanımlı, genel amaçlı, içerisine HTML gömülebilen betik ve programlama dilidir. İlk kez 1995 yılında Rasmus Lerdorf tarafından yaratılan PHP'nin geliştirilmesi bugün PHP topluluğu tarafından sürdürülmektedir. Ocak 2013 itibarıyla 244 milyondan fazla web sitesi PHP ile çalışırken 2.1 milyon web sunucusunda PHP kurulumu bulunmaktadır.

<span class="mw-page-title-main">Emacs</span> genişletilebilirlik yönünden birbirine benzeyen ve ilişkili metin editörlerinin genel adı

Emacs, özellikle genişletilebilirlik yönünden birbirine benzeyen ve ilişkili metin düzenleyicilerin genel adıdır. Bu metin düzenleyicilerin en yaygını GNU Emacs olduğundan, sıklıkla GNU Emacs yerine kullanılır.

<span class="mw-page-title-main">Make</span>

Make dosyaları bir formdan diğerini çevirme işlemini otomatikleştiren bir araçtır. Bu işlemi, çevrilecek programların ihtiyaç duyacağı diğer programları kontrol ettikten sonra gerekli programları çalıştırarak çevirme işlemini gerçekleştirir. Çevrilen programı çalıştırmak için ihtiyaç duyulan diğer programlara bağımlılıklar denir. Unix/Linux tabanlı işletim sistemlerinde, kaynak kodu nesne koduna derlerken ve nesne kodlarını çalıştırılabilir (executable) ve kütüphane (library) dosyalarına bağlarken (linking) sıklıkla kullanılır. Bağımlılık grafiğini çıkarmak için "Makefile" ismi verilen bir dosya kullanır ve shell'e geçirilmek üzere kullanılan betikleri (script) oluşturur.

<span class="mw-page-title-main">PiSi Paket Yöneticisi</span>

PiSi, 2011.2 sürümüne kadar Pardus'un güncel olarak da Pisi Linux ve Solus'un paket yöneticisidir. Bağımlılıkları takip ederek paket inşa etme, kurma, kaldırma, yükseltme ve benzeri işlevleri yerine getirir. Kullanıcı dostu bir grafiksel arayüz ve kapsamlı bir komut satırı arayüzü içerir. Geliştiriciler için tanıdık ve basit bir geliştirme ortamı sunar.

<span class="mw-page-title-main">Apache Ivy</span>

Apache Ivy halihazırda Apache Ant bünyesinde geliştirilmekte olan bir geçişken bağımlılık yöneticisidir. Ivy, Apache Ant'le birlikte çalışarak Java diliyle yazılmış bir projenin bağımlılık çözümlemesini yapmaktadır. Bir projenin son halini alması için gerekli bağımlılık tanımları ayrı bir XML dosyasında saklanır. Ivy, Apache Maven'in çalışma mantığına sa hiptir ancak projelere son halini verebilen bu yazılımın tersine yalnızca bir bağımlılık yöneticisi işlevi görmektedir.

Microsoft Visual Studio, Microsoft tarafından geliştirilen bir tümleşik geliştirme ortamıdır (IDE). Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework ve Microsoft Silverlight tarafından desteklenen tüm platformlar için yönetilen kod ile birlikte yerel kod ve Windows Forms uygulamaları, web siteleri, web uygulamaları ve web servisleri ile birlikte konsol ve grafiksel kullanıcı arayüzü uygulamaları geliştirmek için kullanılır.

Apache Wicket veya kısaca Wicket Java programlama dili için bileşen tabanlı hafif bir web uygulama kütüphanesidir. Jonathan Locke tarafından geliştirilmeye başlanmış ve ilk sürümü 2005 yılında çıkmıştır.

Java Geliştirme Kiti (JDK) Java geliştiricilerine yönelik bir Oracle Corporation ürünüdür. Java'nın kullanıma sunulmasından beri en geniş kullanım alanı bulan Java SDK'dır. 17 Ekim 2006'da, Sun GNU General Public License (GPL) altında sunulacağını duyurdu ki bu özgür yazılım olacağı anlamına geliyordu. Bunun gerçekleşmesi ise 8 Mayıs 2007'de oldu; Sun kaynak kodu OpenJDK'ya bağışladı.

<span class="mw-page-title-main">MATLAB</span>

MATLAB, çok paradigmalı sayısal hesaplama yazılımı ve dördüncü nesil programlama dilidir. Özel mülk bir programlama dili olan MATLAB, MathWorks tarafından geliştirilmektedir. MATLAB kullanıcıya, matris işleme, fonksiyon ve veri çizme, algoritma uygulama, kullanıcı arayüzü oluşturma, C, C++, Java ve Fortran gibi diğer dillerde yazılmış programlarla arabağlama imkânı tanır.

<span class="mw-page-title-main">Dalvik (yazılım)</span> Google tarafından yazılmış android için programlama dili

Dalvik yazılımı Google tarafından geliştirilmiş, Android için yazılmış uygulamaları yürüten ve şu an durdurulan sanal makine (VM) 'dir. Dalvik, Android 4.4 "KitKat" ve önceki Android sürümlerinin yazılım yığınının ayrılmaz bir parçasıdır; tipik olarak cep telefonları ve tablet bilgisayarlar gibi mobil cihazlarda ve daha yakınlarda Smart TV'ler ve giyilebilir bilgisayar gibi cihazlarda kullanılırdı. Dalvik, açık kaynaklı yazılım, Dan Bornstein tarafından yazılmıştır ve ismini Eyjafjörður, İzlanda da yerleşen Dalvik balıkçı köyünden almıştır. Android için programlar yaygın olarak Java ile yazılmış ve Java sanal makinesi için baytkodu derlemiştir. Daha sonra Dalvik bytecodeye çevrilmiş ve .dex ve .odex dosyalarında saklanır. Kompakt Dalvik yürütülebilir biçimi sistemleri için tasarlanmış, bellek ve işlemci hızı açısından sınırlandırılmıştır.

Kotlin, Java sanal makinesi (JVM) üzerinde çalışan ayrıca JavaScript kaynak koduna veya LLVM ile makine koduna derlenebilen, statik tipli bir programlama dilidir. İlk geliştirme Sankt-Peterburg, Rusya merkezli JetBrains programcıları tarafından yapılmıştır. İsmi Kotlin Adası'ndan gelmektedir. Java ile uyumlu sözdizimi olmasa da, Kotlin Java kodu ile birlikte çalışmak üzere tasarlanmıştır. Kotlin, Apple'ın Swift diline benzemektedir.

<span class="mw-page-title-main">Android yazılımı geliştirme</span>

Android yazılım geliştirmesi Android işletim sistemi için yeni uygulamaların oluşturulduğu süreçtir. Uygulamalar genellikle Android yazılım geliştirme kiti (SDK) kullanılarak Java programlama dilinde geliştirilir; ancak diğer geliştirme ortamları da mevcuttur. Google, Android uygulamaları Kotlin, Java ve C++ dilleri kullanılarak Android yazılım geliştirme kiti (SDK) kullanılarak yazılabilir" ve diğer dilleri kullanmak da mümkün olduğunu belirtiyor. Go, JavaScript, C, C++ veya Assembly gibi Java sanal makinesi (JVM) dışı tüm diller, muhtemelen kısıtlı API desteğiyle araçlar tarafından sağlanabilecek JVM dil kodunun yardımına ihtiyaç duyar.

Bu, Microsoft Windows bileşenlerinin bir listesidir.

Microsoft Windows uygulama programlamasında, OLE Otomasyonu, Microsoft tarafından oluşturulan süreçler arası bir iletişim mekanizmasıdır. Başlangıçta Visual Basic olan komut dosyası dilleri tarafından kullanılması amaçlanan Bileşen Nesne Modeli'nin (COM) bir alt kümesine dayanmaktadır, ancak şimdi Windows'ta birkaç dil tarafından kullanılmaktadır. IDispatch arabirimini uygulamak için tüm otomasyon nesneleri gereklidir. Otomasyon denetleyicileri adı verilen uygulamaların, diğer uygulamalar tarafından dışa aktarılan paylaşılan otomasyon nesnelerine erişebildiği ve bunları değiştirebildiği bir altyapı sağlamaktadır. Uygulamaların birbirini kontrol etmesi için daha eski bir mekanizma olan Dinamik Veri Değişimi'nin (DDE) yerini almaktadır. DDE'de olduğu gibi, OLE Otomasyonunda otomasyon denetleyicisi "istemci"dir ve otomasyon nesnelerini dışa aktaran uygulama "sunucu"dur.

<span class="mw-page-title-main">OmegaT</span>

OmegaT, Java programlama dilinde yazılmış bir bilgisayar destekli çeviri aracıdır. Başlangıçta 2000 yılında Keith Godfrey tarafından geliştirilen bir özgür yazılım olup şu anda Aaron Madlon-Kay liderliğindeki bir ekip tarafından geliştirilmektedir.

<span class="mw-page-title-main">Nullsoft Scriptable Install System</span>

Nullsoft Scriptable Install System (NSIS), Winamp'ın yapımcıları Nullsoft tarafından desteklenen Microsoft Windows için komut dosyasıyla çalışan bir kurulum sihirbazı hazırlama aracıdır. NSIS, başta zlib lisansı olmak üzere, özgür yazılım lisanslarının bir kombinasyonu altında yayımlanır. Amazon, Dropbox, Google, Ubisoft, FL Studio, BitTorrent ve McAfee gibi kullanıcılarla, InstallShield gibi ticari özel mülk ürünlere yaygın olarak kullanılan bir alternatif haline geldi.

yEd diyagram oluşturma programı

yEd çoklu belge arayüzüne sahip genel amaçlı bir diyagram oluşturma programıdır.

<span class="mw-page-title-main">C.a.R.</span> Etkileşimli geometri uygulaması

C.a.R.Compass and Ruler, Öklidyen ve Öklid dışı geometrik yapılar inşa edebilen ücretsiz ve açık kaynaklı bir interaktif geometri uygulamasıdır. Yazılım Java tabanlıdır. Geliştiricisi, Eichstätt-Ingolstadt Katolik Üniversitesi'nden René Grothmann'dır. GNU Genel Kamu Lisansı (GPL) koşulları altında lisanslanmıştır.