Showing posts with label Eclipse. Show all posts
Showing posts with label Eclipse. Show all posts

February 23, 2009

Adding Listeners in EMF

In EMF, listeners are added like adapters. Lets say, you have a Person EObject with Name EAttribute. Here is a code snippet that will listen to changes in Name:

 

Person person = ExamplePackage.eINSTANCE.createPerson();
person.eAdapters().add(
            new AdapterImpl() {
                @Override
                public void notifyChanged(Notification notification) {
                    // Listen for changes to features.
                    switch (notification.getFeatureID(Person.class)) {
                    case ExamplePackage.PERSON__NAME:
                        if(notification.getEventType() == Notification.SET) {
                              // do something
                           }
                    }
                }
            }
        );

November 22, 2008

Emf Data Binding, A Wrap Up

I have been waiting for JFace data binding with EMF since I tried JFace data binding with beans and POJOs with Eclipse 3.3. Well, Eclipse 3.4, even 3.4.1 is out and I finally tried data binding with EMF.

EMF is simply great and even with projects like Teneo and CDO it is getting more power. These projects are another story so lets get back to EMF data binding.

If you google “emf data binding”, you will probably end up with a work in progress eclipse wiki page here. Well this article is a bit old and unfortunately misdirects you to write your own property change event mechanism instead of EMF’s own mechanisms. In the time of that article, there is no support for EMF data binding so that was a workaround for supporting EMF data binding. But now we have EMF support in data binding, so you don’t need to write your property change stuff. Another than that, article is a good introduction.

Another link, I should give you is Tom Schindl’s example here. It is a little bit crowded there, with datasources, Teneo and CDO, but it is a good one. Also you can read some more in his blog entry. Well I just realized that the previous article that I told you is also Tom’s and yes, it needs an update Tom.

Final link that I should have pointed at first is eclipse wiki page for JFace data binding which has good stuff but not complete one. Most of these examples are with beans but converting them to EMF must be trivial.

I planned to give you some examples on data binding with EMF, even containing a nested attributes ones but I decided to end this entry here, calling this a wrap up, and I hope to write those examples asap (after some sleep:)).

One final note, please add your links and comments about the resources I didn’t notice.

July 21, 2008

Eclipse ve Java Hafıza Arttırımı ile Performans Kazanımı

Eclipse kullanıyorsanız muhtemelen yavaşlık problemleri yaşıyorsunuzdur. Bu problemlerin aslında basit bir çözümü var. Aslında bu çözüm bütün Java uygulamaları için geçerlidir. Bütün Java uygulamalarını hafıza kullanımı sınırlarını ayarlayabilirsiniz.

Bütün Java uygulamalarınızı çalıştırırken -Xms40m ile minimum hafıza kullanım sınırını 40 megabyte'a; -Xmx512m ile maximum hafiza kullanımını 512 megabyte'a sınırlayabilirsiniz. Örneğin:

java App -Xms40m -Xmx512m

Bu ayarlar Eclipse içinde geçerlidir. Ayarları değiştirmek için eclipse.exe 'inin bulunduğu dizinde bulunan eclipse.ini dosyasını bir metin düzenleyici ile açın. Zaten ayarları orada göreceksiniz. Bu değerleri hafızanıza göre ayarlayabilirsiniz. Örneğin -Xms756m -Xmx756m şeklinde ayarlayabilirsiniz.

Fakat eğer bu değerleri Java'nın kabul edemeyeceği kadar büyük verirseniz Eclipse hata verip başlamayacaktır. Benim deneyimlerim 1000mb'yi geçince hata vereceği yönünde. Bu kısıt, Java'nın hafıza adresleme kısıtları ile ilgilidir.

Son olarak Xms ile ayarladığınız değeri ilk bakışta düşük bir değere eşitlemenin iyi olacağı düşünebilir. Böylelikle Eclipse ya da herhangi bir Java uygulaması Xms ile ayarladığınız hafıza ile başlar ve gerektikçe hafıza kullanımı arttırır. Yani 40mb ile başlayıp hafıza gerektikçe Xmx ile ayarladığınız değere kadar hafıza arttırımı yapacaktır. Fakat bu nokta önemli olan, bu hafıza arttırımı işlemi çok zahmetli ve dolayısıyla performans düşürücü bir işlemdir. Yani kısacası Xms değerini küçük vermeyin, hatta Xmx ile aynı değeri verin ki hafıza arttırımı işlemine gerek kalmasın.

July 20, 2008

Ganymede Çıktı

Hatta çok oldu çıkalı ama ben bir türlü yazamadım. :) Farklı indirme paketlerini bulabileceğiniz adresi: http://www.eclipse.org/downloads

Mutlu kodlamalar,
Tankut

June 18, 2008

Ganymede geliyor...

Evet sonunda Eclipse Ganymede eş zamanlı sürümüne kavuşuyoruz. Şu anda RC4 sürümünü indirilebileceğiniz Ganymede 25 Haziran 2008 tarihinde yayınlanacak. Ganymede, 24 proje içermektedir. Bu 24 projenin eş zamanlı yayınlanması ile uyumluluk sorunlarının büyük ölçüde önüne geçilmesi hedeflenmektedir. Bu projeler:
    Gözüme çarpan yenilikler:
    OSGİ servislerinin eklenti görünümünde gösterilmesi.
    Çalıştırma yapılandırmaları ekranında filitreleme:
    Gelişmiş Java editörü "breadcrumb"ı:
    Ve burada sayamadığım birçok özellik. Mutlaka Ganymede'i indirip bir göz atın.

June 14, 2008

Eclipse mi Netbeans mi?



JTPD forumlarında bir soru üzerine yazdığım yorumumu burada da tekrarlamak istiyorum:
IDE'leri sabaha kadar tartışsak yine sonuca varamayız ama ben kendi adıma Eclipseciyim diyebilirim.
NetBeans'ın grafiksel arayüz programlama açısından büyük bir artısı olduğu gerçek. Yani içinde başarı bir GUI editörü(Matiesse) geliyor. Bunun dışında indirme büyüklüğünün Eclipse'e göre küçük olması bir artısı. Ayrıca birçok şey Netbeans içinde basit sürümleri de olsa hazır bir şekilde geliyor. Bu da kullanıcılar açısında rahatlık getiriyor.
Eclipse'in ise Netbeans'den parasız GUI editörü dışında eksiği yok fazlası var. [Güncelleme: (15.12.2010) Eclipse için artık çok güçlü bir grafiksel kullanıcı arayüzü düzenleyicisi var. Google'un satın aldığı Instantiations firmasının Eclipse için geliştirdiği bu güçlü düzenleyiciler artık bedava.] Yani her işi yapabileceğiniz bir plugin mutlaka mevcuttur. Bu bazıları için sorun olabilir. Yani plugin ara bul yükle Eclipse'de bir bütünlük olmadığı hissini verebilir ama aslında Eclipse gerçek bir bütünleşik platform.
Madde madde karşılaştırma yerine çok önemli iki önemli şey var. Birincisi toplulukları; Eclipse'in gerçekten hatırı sayılır bir topluluğu var. Ayrıca Eclipse IBM tarafından başlatılmış olsa da şu anda kar amacı gütmeyen Eclipse Vakfı tarafından yönlendiriliyor. Bu nokta da dikkat edilmesi gereken şey birçok büyük firmanın IDE ve benzeri yazılımlarını Eclipse tabanlı olarak geliştirmeye başlamaları. Başta IBM olmak üzere Oracle, CodeGear, Windriver gibi kendi dalında çok önemli firmalar Eclipse tabanlı yazılım geliştiriyorlar ve Eclipse'e destek veriyorlar. Netbeans bu anlamda Sun'nın desteği olmasına rağmen bu kadar büyük bir kullanımı yok.
İkinci önemli nokta, Eclipse pluginlerini yönetmek için OSGi çerçevesini kullanıyor. BU çerçeve gerçekten çok önemli. Kimileri için "Java Operating System" olarak adlandırılan bu çerçeve sayesinde Eclipse çok güçlü bir plugin yapısı sunabiliyor. Deneyimli Java kullanıcılarına OSGi çerçevesine bakmalarını öneririm. Buraya yazıyorum ileride OSGi'yı çok duyacağız ve Java dünyasında gittikçe güçlenen yerini hissedeceğiz.

April 11, 2008

Hunter for Turkish 'i'

Turkish language is probably a nightmare for programmers, especially for ones that something to do with internationalization. Why? Because Turkish alphabet has two characters: 'i' and 'ı' (i without dot); and their capitals 'İ' and 'I' respectively. Did you notice it?

It is unfortunate that in Turkish uppercase of 'i' is not 'I' (which is the case in English) And it gets worse as lowercase of 'I' is 'ı' not 'i'.

So, when you are programming you should always have this situation in mind especially if you are calling (most probably you are) toLowerCase, toUpperCase and equals in any programming language. Most languages have overridden methods which takes locale as parameters.

Especially, open source projects generally have such problems. I try to hunt these bugs and here is what I got for now:

I will be hunting for more :)

November 20, 2007

ecilpse.users.turkish Haber Grubu

Merhabalar,

EclipsIST 2007 'deki görüşlerin ortak noktasını oluşturan Türk Eclipse kullanıcı ve geliştiricileri için bir tartışma ortamını sağlamak için Eclipse haber grupları arasına eclipse.users.turkish eklendi. Haber grubu sunucuna bağlanmak için eclipse.org sitesinden üye olabilirsiniz.

Hayırlı olsun:)

July 25, 2007

Eclipse 3.3 ile Merhaba Java Dünyası

Bu yazıda, Eclipse kullanarak basit bir Java uygulaması nasıl geliştirilebileceği hakkında bildiklerimi paylaşacağım.

Ama önce Eclipse hakkında kısa bir bilgi vereyim. Eclipse, 2001 yılında IBM tarafından geliştirilmeye başlanmış bir tümleşik geliştirme ortamıdır. IBM daha sonra bu yazılımı Eclipse Vakfı'na bağışlamış ve açık kaynak kodlu bir yazılım halini almıştır. Şu an birçok yazılım devi tarafından desteklenen Eclipse, Haziran 2007'de 3.3 sürümü çıkarmıştır.

Eclipse şu anda Java geliştirmek için en çok kullanılan ortamlardan biridir. Başarısının altındaki en büyük nedenlerden biri, eklenti mimari yapısı sayesinde Eclipse'i genişletmenin inanılmaz
kolay olmasıdır. Bu sayede sadece Java değil, uygun eklentiler ile C/C++, Python, Javascript gibi dillerde geliştirme yapmak da mümkün olmaktadır. Eclipse ekosistemi şu anda ticari ya da açık kaynak kodlu pek çok eklenti içermektedir. Bu eklentilerin belli başlı 21 tanesi Eclipse 3.3 sürümü ile aynı zamanda yayınlanan Europa eş zamanlı sürümünde yer almaktadır. (Europa içerdiği projeler hakkında başka bir yazı yazmayı düşünüyorum)

Bu kadar bilgi yeter birazda iş yapalım. Öncelikle www.eclipse.org/downloads sayfasından "Eclipse IDE for Java Developers" indirmeniz gerekiyor. Tabii Java'yı kurmanız gerektiğini söylememe gerek yok sanırım:) Eclipse'in bu sürümü için en az Java 1.5 yüklü olması tavsiye ediliyor.

Eclipse'in kurulumu çok kolay indirdiğiniz zip dosyasını bir dizine açıyorsunuz ve Eclipse kurulmuş oluyor:) Zipi açtığınız dizindeki Eclipse.exe'yi çalıştırmanız yeterli. (tabii windows için)

Eclipse açılışında sizden bir çalışma alanı (workspace) dizini soracaktır. Eclipse bu alanı projelerinizi ve ayarlarınızı saklamak için kullanacaktır. Herhangi bir dizin girin. Ve Eclipse'in her açılışında bu dizini sormasını istemiyorsanız "Use this as the default and dont ask again" seçeneğini işaretleyin.

Çalışma alanını ilk kez kullanıyorsanız, Eclipse sizi "Hoşgeldiniz" görünümü ile karşılar. Burada Eclipse ve yüklü eklentileri ile ilgili genel bilgilere, yardım sayfalarına, eğitim dokümanalarına ulaşabilirsiniz. Bu görünümü sol üste "Welcome" başlığının yanındaki çarpı ile kapayabiliyoruz. Böyle Java perspektifini görebiliyoruz. Burada kısaca Eclipse'deki perspektif olayından bahsedeyim. Eclipse, görünümlerin yerleşimi ve hatta bazı menülerin,vb. yerleşimini perspektifler kullanarak yönetmektedir. Biz Java perspektifini ve hata ayıklama yapmak için "Debug" perspektifini kullanacağız. Kendi yerleşimlerinizi yapıp, perspektif olarak kaydedebilirsiniz. (Başka bir yazı konusu daha)


Şimdi bir Java projesi yaratmamız gerekiyor. Bunun için ya "File" menüsünden ya da soldaki "Package Explorer" görünümünde sağ tıklayarak New->Project seçip çıkan sihirbazlar arasından "Java Project" seçmemiz gerekiyor. Çıkan ekranda bir proje adı girmemiz gerekiyor. Diğer ekrandaki ayarlar arasında projenin kullanacağı Java Sanal Makinası seçimi, projenin kaynak ve sınıf dosyalarının ayrı ayrı dizinlerde mi yoksa aynı dizinde olması gibi ayarlar mevcut. Ayarlarla oynamadan "Finish" yapabileceğimiz gibi "Next" ile kullanacağımız kütüphaneleri ekleyebileceğimiz ekranlara ulaşabiliriz. Biz kısayoldan "Finish" tıklıyoruz.


"deneme" isimli projemiz yaratılınca soldaki "Package Explorer" görünümünde gözükecektir. Projeye yeni bir sınıf eklemek için, bu görünümden projeye sağ tıklayıp New->Class seçmeliyiz. Burada bir sınıf ismi girmemiz gerekiyor. Ayrıca bir de paket ismi vermekte yarar var. (java pratikleri açısından paket ismi vermek iyidir) Paket ismi olarak "tr.eclipse.deneme", sınıf ismi olarak "Merhaba" giriyoruz. Bir de main metodu bizim için yaratması için ilgili seçeneği seçiyoruz. Bu ekranda sınıfın super sınıfını ve/veya gerçeklediği arayüzleri de seçebiliyoruz. Bunları burada yapınca Eclipse sınıfı yaratırken gerçeklenmesi gereken metodlarıda bizim için sınıfımıza ekleyecektir. Ama bu ekranda bu seçenekleri kullanmazsanız da üzülmeyin Eclipse'e bu metodları daha sonrada ekletebilirsiniz. (Başka bir yazı konusu daha:))

"Finish" diyip sınıfımızı yaratınca Eclipse ekranında Merhaba sınıfımız açılacaktır. Burada main metoduzu içindeki TODO satırını silip yerine "Merhaba Dünya" yazacak satırımızı ekleyelim. Ama bunun içinde Eclipse kısayolunu kullanalım; "sysout" yazıp CTRL+space basınca Eclipse bizim için bunu "System.out.println(""); " şeklinde tamamlayacaktır. Bu Eclipse'de bulunan kod şablonlarının kullanıma bir örnektir. (Başka bir yazı konusu) Satırın içine "Merhaba Dünya" yazalım. Böylece sınıfımız çalışmaya hazırdır.

Çalıştırmak için sınıfın üzerine sağ tıkladığımızda çıkan menüde "Run As->Java Application" seçiyoruz. Ve sonucu "console" görünümünde görüyoruz. Hata ayıklamak (debug) yapmak için ise "Debug As->Java Application" seçmeliyiz. (Eclipse ile hata ayıklamada başka bir yazı konusu)

Ve sonunda başardık. Yazı tahminimden uzun oldu çünkü basit bir merhaba dünya uygulamasından öte Eclipse'in güzel özelliklerinlerinin bazılarına kısaca değinmek istedim. Çünkü Eclipse'i gerçekten çok kullanışlı buluyorum ve bütün Java geliştiricilerinin kullanması gerektiğini düşünüyorum. Yazı içerisinde başka yazı konusu olarak not aldığım noktalar hakkında başka yazılar da eklemeyi düşünüyorum. Bu yüzden arada bir bu sayfayı kontrol etmenizi ya da RSS beslemelerine üye olmanızı tavsiye ederim.

Tankut