Delphi XE yeni bir şans olabilir mi?

Delphinin en son versiyonu olan Delphi XE (RAD Studio XE) raflarda yerini aldı. Programın 30 günlük deneme sürümünü kurup, yeni (ya da daha da geliştirilmiş) özelliklerine göz attığımda Delphi XE nin gerçekten son derece gözalıcı özelliklerle donatıldığını gördüm. 64 bit derleyiciler hariç, hemen hemen her başlıkta eksiksiz bir ürün çıkartılmış.

Bunlara başlıklara kısaca değinirsek

Derleyici : En büyük değişim, delphi derleyicisinin ANSI C++ derleyicisi ile çok daha uyumlu hale getirilmiş olmasında görülmektedir. Yeni nesil işlemciler (SSE4.x, AMD 3DNow vs.) için uyumluluk ve artırılmış performanstan bahsedebiliriz. Derleme işlemi artık arkaplanda bir thread tarafından yapılabiliyor. (Çok büyük projelerde, saatler süren derlemeleriniz varsa, işe yarar bir özellik şüphesiz)

Geliştime Ortamı : Artık Delphi geliştiricileri Visual Studio 2008 / 2010 veya MonoDevelop içinden geliştirme yapabilecekler. (Radikal bir değişiklik olmakla birlikte kimin bu şekilde kullanacağını da merak ediyorum. Çok değil, birkaç sene önce IDE savaşlarından bahsedenler şimdi en güçlü silahlarını almadan savaş meydanına mı çıkıyor?) Birde beklendiği üzere, Win32 SDK, Windows 7 API ve .NET 4.0 da tam desteklenmektedir.

Dilde Yapılan Yenilikler : Kişisel olarak en çok beğendiğim özellik, Exit derken artık opsiyonel olarak Result değerini de set edebiliyoruz. (C# taki return false, return 3 vb. kullanım gibi) Bunların dışında, RegEx (Regular Expression) library kullanımı artık – çok geç kalınmıl olsa da- mümkün. Dosyalama ve I/O işlemlerini yapmak için kullanılan eski tarz fonksiyon bazlı yapı artık OOP çatısına kavuşturulmuş. Yine C++ uyumlu object sınıfının ToString metodları, Unicode destekleri ve TStringBuilder gibi (yine C# tan aşina) sınıflar gelmiş (DateTime tipi ve DateUtils uniti geliştirilmiş mesela)

Kod Yönetimi : Tanıtımlarda ve ürün reklamlarında üstüne basa basa vurguladıkları Subversion Integration (versiyon, kodda yapılan değişiklikler ve geçmiş kontrolü) gelmiş. (Bir çok üründe ezelden beridir var olan bir özellik. Kaldı ki, 10 yıl önceki Delphi 7  Team Edition bile buna yakın özellikler sunuyordu zaten) Kod düzenleyici (Kod Formatlayıcı) , Refactoring (değişken rename vb. işlemler) gibi araçlar daha da desteklenmiş.

Modelleme : Son zamanlarda yazılım mühendisliğinin moda kavramlarından olan Modelling de unutulmamış. Nesne yapısı hiyerarşisinin gösteriminden, durum grafiklerine, komponent diyagramlarından, kod dökümanı oluşturmaya kadar aklınıza ne geliyorsa fazlası var, eksiği yok deyip geçeyim.

Test : Yine zorla her programa dayatılan Unit Testing den sonunda Delphi de nasibini almış. DUnit gibi süper bir unitimiz var artık.

Veritabanı : Sanırım her bir yeni versiyon için en çok ter döktükleri yer burası. BDE den ADO ya, dbExpress ten dbGO ya, önce tonla farklımetodoloji icat edersen sonunda geleceğin nokta budur. Özetle, adı geçen tüm veritabanı erişim ve sunum teknolojilerinin tamamı güncellenmiş. BDE (Borland Database Engine) hala güncel olduğunu görünce nostalji etkisinden gözlerim yaşardı desem yalan olmaz. Ürünle birlikte Interbase 20 kullanıcılı Developer Edition ücretsiz gelmekte (Yine ilgililere – varsa – duyurulur)

Yeni Teknolojiler : Cloud (Bulut) desteği de unutulmamış. Amazon EC2 ile patlayan, Microsoftun her zamanki gibi ışığı görüp çakmasını çıkartıp bende varım dediği (Azure) tam olarak desteklenmiş (Google Cloud neden desteklenmemiş acaba.)

Komponentler : Delphiyi delphi yapan VCL ler, 3rd party componentler… Burada önce hakkını verelim, son derece seçkin component setleri hazır olarak gelmekte. Indy, Raize, IP-Works, TeeChart, Nevrona Rave, Installaware gibi çok seçkin componentler hazır. DevExpress gibi UI alanında bestseller bir ürünün hala yüklü gelmemesi ise bence büyük hata. (Üstelik Delphi kökenli DevExpress cileri böylesine küstürmek te büyük başarı)

Web : Yine Delphi tarafından sayısız deneme yanılma yapılan bir diğer konu. Atozed firmasının Intraweb komponentleri XE ile birlikte de geliyor. VCL olarak kullanmak için ideal bir set.  Indy bileşenleri de eksiksiz, güçlü, open source  bir alternatif. WebSnap kullananlar için Server Side VBScript JavaScript desteği eklenmiş.

Yeni eklenen komponentlere (VCL) gelince;  etkileyici Gesture designer gelmiş. dokunmatik ya da etkileşimli uygulama yazanlar bunu çok sevecekler. TTouchKeyboard (Sanal Ekran Klavyesi) de yeterince başarılı. Görsel olarak çok futuristik olmasa da, kullanımı kolay ve fazlasıyla iş görüyor.

(Web geliştirme konusunda Delphi Prism / RadPHP XE ilgili (ve iddialı) olduğundan WEB tabanlı projeleri bu ürünlerle değerlendirmek daha sağlıklı bir yaklaşım olur)

Sonuç :

90 ların ortasında çıkan, kısa sürede efsaneleşen Delphi ne yazık ki, son 4-5 yıldır sürekli kan kaybetmektedir. Bu kötü gidişatın sebepleri ayrı bir makale konusu olacağından girmek istemiyorum. Delphi XE, ilk bakışta gözalıcı görünmekle birlikte, kaçan delphi geliştiricilerini geri getirebilecek mi? Ya da diğer dilleri (Mesela Visual Basic, C#, Java) kullanarak geliştirme yapan programcıları kazanabilecek mi? Her ikisine de evet diyebilmek çok zor. Eğer eldeki delphi geliştiricilerini kaçırmazsa bu bile büyük başarı olacaktır.

Delphi neredeyse her yıl yeni bir versiyon çıkartmaktadır. CodeGear RAD Studio 2009, Embarcadero Delphi 2010, Şimdi RAD Studio XE… Buradan da anlaşılacağı gibi, geçiş süreci hala devam etmektedir. Şimdilik görünen, Delphi nin var olan teknolojileri çok geçmeden yakaladığı ve kendi geliştiricilerini her zaman up to date tuttuğudur. Burada insanüstü bir gayret gösterildiğini anlamak zor değil. Microsoft cephesinde, işler çok daha yalın. Herşeyden önce işletim sistemi ve Framework gibi kendi tekelinde ürünler var. Piyasaya yeni bir versiyon çıkmadan önce, kendi içinde (inhouse) olarak tüm birimler eşzamanlı harekete geçebilir.  Her birim kendi uyumlu güncellemelerini yapabilir. Delphi geliştiricileri ise, oturup final release beklemek zorundalar. Tek beklenilen Microsoft olsa yine iyi, App Engine alanında gittikçe daha çok görülen Google, Java dünyası, Açık kaynak kodu geliştiriciler vs. vs. Hemen her cephede en önde yer alıp şaşkın şaşkın dolaşmaktan başka çareleri yok gibi…

Ben kişisel olarak Visual Studio ve C# kullanıyorum. Delphi kullanmayı bırakalı 3-4 yıl oluyor. Hala bazı projelerde Delphi ile çözüm geliştirdiğim de oluyor (100 lerce MB framework kurmayı gerektirmeyen, Native Win32 uygulamalarında mesela…)

Delphi geliştiricilerinin Delphi yi bırakmaları için hala ciddi bir neden yok. Benzer şekilde Delphi de ısrar etmeleri için de bir neden yok.

Delphi yıllar önce Anders Hejlsberg ile yaptığını bir daha yapabilir mi? Üzülerek te olsa pek ihtimal veremiyorum. Bana göre Borland firması, Hejlberg’in Microsofta 1 milyon $ ve hisse ortaklığı sonucu kaptırılmasıyla zaten bitmişti. Sonrasında firma  sayısız isim değiştirmiş ve son olarak 2 yıl önce tüm ürünleri ile birlikte komik ötesi bir rakamla Embarcadero’ya  satılmıştı. Tüm satış değeri sadece 23 milyon $ dı. (Borland’ın alıcı bulmak için kapı kapı gezdiği yıllarda, Türkiye’den bir alıcı çıksa Türk Bilişim sektörü için çağın hareketi olurdu diye iç geçirirdim. Emsal teşkil etmesi açısından bazı örnekler vermek istiyorum;

  • Neredeyse tedavülden kalkacak olan Sybase veritabanı, SAP ye, Borlandın tam 250 katına, 5.6 milyar dolara satıldı.
  • Ülkemizde Delphi kullanarak geliştirme yapan Logo Yazılımın Borsa bedeli 70 milyon $ civarında
  • Ülker, Belçikalı çikolata üreticisi Godiva’yı 600 milyon $a satın aldı
  • GS nin Aslantepe projesi : 300 milyon $ (bunun 4 katına çıkacağı söyleniyor)
  • BİM grubunun Mecidiyeköydeki eski likör fabrikasına verdiği teklif : 450 milyon $)

Sonuçta, yeni projeler için birincil uygulama olarak seçmemekle birlikte, eski gözağrımı, 1. versiyonundan 7. versiyonuna kadar kullandığım Delphi yi, arada bir göz hapsinde tutmakta fayda var 😉 )

Delphi içinden uEye Kamera Kullanımı

iDS uEye kameralar, son derece güçlü bir SDK ile birlikte gelmektedirler.  Güçlü yanlarını genel başlıklar altında toplarsak

  • 32 bit ve 64 bit işletim sistemleri için %100 destek
  • Tüm platformlar için %100 destek (Native Windows, .NET, Linux, Web)
  • ActiveX, OCX bileşenleri olarak kullanabilme
  • Native .NET kütüphanesi
  • Tüm görüntü işleme arabirimleri (HALCON, neurocheck, cognex…)
  • Birçok derlenmiş ve çalışan örnek uygulamalar

vb. sayılabilir.

.NET ortamında uygulama geliştirmek için, C# ve onun güçlü IDE si VS yi kesinlikle tavsiye ederim. Buna rağmen, Delphi ile uygulama geliştirmenin cazibesi de hala devam etmektedir. Bunları da kendime göre kısaca sıralarsam;

  • En hızlı Native Win32 uygulama
  • Delphi 1 den itibaren standartlaşmış güçlü ve oturmuş IDE
  • ObjectPascal dilinin getirdiği güç artı kolaylık
  • Birçok VCL, hazır kod, library vb. vb.
  • Açıklanamayan Delphi bağlılığı/sevgisi

Delphi 1 den Delphi 2010 versiyonuna kadar Delphi kullanmış biri olarak, laf açılmışken susmam son derece zor olduğundan, lafı burada keserek, Delphi içinden uEye kameralarının kullanımına geçiyorum.

1. Öncelikle uEye Driverları ve programları Full olarak kurulur. (www.ueyesetup.com)

2. uEye Demo programı ile kameranın düzgün olarak çalıştığı test edilir.

3. Şimdi Delphi Çalıştırılır (Resimler Delphi2009 programından alınmıştır. Delphi5 ten itibaren aynı mantık geçerli olduğundan tüm versiyonlar için burada anlatılanlar geçerli olacaktır)

ilk iş olarak, diğer tüm ActiveX bileşenlerinde olduğu gibi, uEye ActiveX bileşeni Delphi içinden yeni bir component olarak install edilir.

Bunun için Component ana menüsünden, “Import Component” menü öğesi seçilir. Gelen ekranda “Import ActiveX Control” radio button işaretlenir ve aşağıdaki ekran gelir.

Bu ekranda uEyeCam ActiveX Control bulunur ve istenilen Delphi component paletine yüklenir. (Ben Additional sekmesini seçtim. ActiveX ya da System gibi palet ler daha okunaklı görünebilir. İStediğinizi seçebilirsiniz zaten, dilerseniz yeni bir palet te oluşturabilirsiniz)

Sonraki ekranda Create New Unit” seçerek ilerledim ve nihayetinde Deplhi bana yeni ActiveX bileşenimin Additional paletine başarıyla yüklendiğini söyledi.

Artık delphi içinden kullanıma hazırım.

Normal form tasarlar gibi çalışıyorum artık. Additional paletinden uEye ActiveX bileşenini formun üzerine koydum ve istediğim gibi ölçeklendirdim.

sonrasında işime yarayacak bazı butonlar koydum. Kamera Aç, Kapat, Resmi Farklı Kaydet vb. gibi.

“Yükle” butonuna

uEyeCam1.InitCamera(0);

kodunu ekliyorum. Ve daha fazla kod yazmadan hemen F9 a basıyorum ve ta taaa… Yine Delphi hızı ve mucizesi ekranda beliriyor…

Dilersem, fotoğrafı farklı kaydetmek için;

uEyeCam1.SaveImage(”);

kodunu kullanabilirim. Parametee olarak ” kullanırsam, kaydedeceğim yeri seçmem için Save Dialog görüntülenecektir. Belirli bir yere kaydetmek istiyorsam, bunu parantez içinde belirtmem yeterlidir.

Kamera ile işim bittiğinde (Formu kapatırken vs.)

uEyeCam1.ExitCamera;

kodunu çağırmam yeterli olacaktır.

Hepsi bu kadar kolay…

uEye ActiveX bileşeninin yüzlerce fonksiyonu mevcuttur ve bunlar Help kısmında son derece detaylı açıklanmıştır. İhtiyaç duyulabilecek hemen her fonksiyon gerçek bir Alman mühendisliği inceliğiyle kodlanmıştır. Programcıya son derece kolay bir kodlama işi kalmış, geliştirilen uygulama diğer Delphi uygulamalarında olduğu gibi, “En Hızlı” ve “En Şık” olarak harddisk te yerini almıştır.

Bir tüyo : Ekranda karşınıza çıkan default iDS uEye görüntüsünden hoşlanmıyorsanız, kendi marka ve logonuzu içeren bitmap dosyayı C:\Windows\System32 klasörüne uEyeCamOcx.bmp ismiyle kaydedin 😉

Uygulama başlar başlamaz sizi bu ekran karşılayacaktır.

uEye 3.60 (Yeni versiyon)

ids imaging firmasının uEye kameraları için geliştirdiği sürücü ve arayüz programları yeni versiyonu 3.60 yayımlandı. http://www.ueyesetup.com adresinden indirilebilir.

uEye Demo programında değişen görsel arabirim ve ilave birkaç özellik göze çarpmaktadır (Profile desteği, customization, auto contrast vb.)

uEye, programcılar için güçlü bir SDK sunmaktadır. Hemen hemen tüm görüntü işleme arabirimleri (3rd parti geliştiriciler dahil) desteklenmektedir. ActiveX, DirectShow,  GeniCAM, Twain, HALCON, CVB, LabView, Cognex, NeuroCheck için hazır API desteği hazır olarak gelmektedir. iDS, 64 bit Windows ve Linux için API geliştirmelerine devam ettiğini duyuruyor. Dolayısıyla kısa süre içinde 64 bit uygulamaları da bekleyebiliriz. (64 bit sürücü dosyaları halihazırda mevcut)

uEye SDK, HALCON, Cognex, MIL vb. gelişmiş bir arabirim kullanmak yerine, kendi görüntü görüntü işleme kütüphanesini geliştirmek isteyen geliştiriciler için eşsiz bir kaynak sunmaktadır. Hem windows hem de Linux işletim sistemini tam desteklemektedir. VB, VB.NET, C, C++, C#, Delphi gibi diller için hazır bir çok örnek ve detaylı dökümantasyon içermektedir.

uEye kameraları ve teknik bilgi, Mavis ten tedarik edilebilir. Mavis, uEye kameralar, bağlantı ekipmanları ve yazılımcılar için destek sunmaktadır. Görüntü işleme ile ilgilenen profesyonel ve amatörler, öğrenciler, akademisyenler veya kendi otomasyon projesine kamera entegre etmek isteyen hemen herkes Mavis ten teknik bilgi alabilir.