DELPHİ
Embarcadero Delphi ya da kısaca Delphi bir programlama dili ve konsol, web,
masaüstü ve mobil uygulamalar için tümleşik derleme ortamı (IDE) dır. Delphi'nin derleyicileri,
kendi Pascal dialekti olan Object
Pascal'ı kullanarak Windows(x86
ve x64), Mac OS X (sadece 32-bit), iOS (32
ve 64-bit), Android ve Linux
için kodlar üretebilir.
Delphi, Code Insight kod editörü, Error Insight gerçek-zamanlı
hata yakalama ve diğer özelliklere sahiptir. Başlıca özellikleri; refactoring; VCL (yerel
Windows) ve FMX (çoklu-platform, her platform için
kısmi yerel); mobil platformlar dahil tüm platformlar için entegre edilmiş
debugger; kaynak kod kontrolü (SVN, git ve Mercurial);
üçüncü-parti bileşenleri destekleyen RAD
Studio'nun bir parçasıdır. Çok güçlü veritabanı desteğine sahiptir. Delphi,
derleme hızı açısından dikkat çekici bir hıza sahiptir.
C# ve Swift gibi yaygın dillerin aksine, bir
milyon satırlık Delphi projesi saniyeler içerisinde derlenebilir. 170,000
satırdan oluşan test projesini saniyeler içinde derlemiştir. Aktif
geliştirilmeye devam edilmektedir ve her altı ayda bir yeni özellikler ve
düzenlemeler ile yeni sürümü yayınlanmaktadır.
XAMARİN
Xamarin'de uygulamanın tüm kodunu C# dili ile
yazıyoruz. Yani Android için Java ya da iOS için objective C ya da Swift'e
ihtiyaç duymuyoruz. Bu durum bizi sürekli olarak "Peki bu nasıl oluyor?
Native mi?" sorularıyla karşı karşıya getiriyor.
Xamarin'in nasıl çalıştığını anlatmaya başlamadan
önce, konuyu daha aşina olduğumuz bir platforma taşıyacak şu soruyu sormakta
fayda var;
Windows'un C/C++ ile yazıldığını biliyoruz
(kernel.dll, win32.dll). Peki C# ile yazdığımız bir program (.net application),
Windows İşletim Sistemi üzerinde nasıl çalışıyor? Peki Windows Forms
Application'ın Native olmadığını söyleyebilir misiniz? Native ne demek? Neye
göre? Kime göre?
Bu soru, C#+Xamarin ile geliştirilen uygulamanın
Android ya da iOS üzerinde çalışması ile ilgili bir benzerlik yakalamanızı
sağlamış olmalı.
Doğrudan bilgimiz olmasa da Pınvoke'u sadece İşletim
Sistemi ile haberleşmede değil aslında birçok yerde zaten kullanıyoruz; VOIP
sistemler, OpenCV, Speech To Text,…
Konuyu biraz derinleştirmek adına arkada neler dönüyor
anlamaya çalışalım;
- *h/*hpp/*h++ Header dosyaları okunarak, c/c++ API ve C# map edilir. (marshaling)
- *.c/*.cpp/*.c++ dosyaları nesne dosyalarına "Compile" (cross compile) edilir ve static iOS kütüphanelerine ya da dynamic Android kütüphanelerine link'lenir.
- Bu kütüphanaler .net projesine refere edilir
- C# dünyasının kullanımına açabilmek için C# wrapper oluşturulur.Bu işleme "Binding (or Wrapping, Bridging) native to c/c++." adı verilir.
Xamarin nasıl çalışıyor sorusunun yanıtı burada gizli.
Xamarin, java jar dosyalarını ve iOS objective-c static lib'lerini (*.a)
bu yaklaşımla kullanımımıza sunarak C# geliştiricilerinin "CrossPlatform
Native" mobil uygulama üretmelerini sağlamaktadır. (Xamarin Platformunda,
C# dili ile yazılan kodun derlenme ve çalışma prensiplerinde (iOS ve Android
için) bazı farklılar vardır.
Biliyorsunuz Xamarin OpenSource bir platform. İnceleme
şansı bulursanız siz de fark edeceksiniz; aslında içinde bugüne kadar bilinen
ve kullanılan tekniklerden farklı bir şey yok (fakat hakkını da teslim etmek
adına şunu belirtmekte yarar var; Xamarin hem iOS, hem Android hem de
WindowsPhone dönüşümlerini sağlayabilmek adına içerisinde farklı bir çok
tekniği kullanan ve üst seviye bir mühendislik yapılarak üretilmiş bir
teknoloji. Projenin bugünk verisyonuna ulaşması yıllar sürmüştür).
Temelde birçok iOS cihazınızda Objective-c ya da swift nasıl çalışıyorsa,
java kodu Android cihazınızda nasıl çalışıyorsa, Xamarin compiler ile derlenen
uygulamalar da cihazlarınız üzerinde aynı şekilde çalışıyor. Bahsi geçen tüm bu
Bridge'lerin isimleri farklı olsa da temelde yaptıkları şey aynı; Bridge burada
sadece bir terminolojiden ibaret. (java dünyası JNI diyor, microsoft PInvoke
diyor.
0 Yorumlar
Bizimle fikirlerinizi paylaşabilirsiniz.