Java ile yazdığım web servisleri test etmek amacıyla Visual Studio 2008 ile (framework 3.5) istemci uygulaması yazayım dedim. Bizim web servis tarafında basic authentication olduğu için istemciye de bunları belirtmek gerekiyordu. Bir daha o site senin bu site benim diye gezmemek için buraya not alayım dedim:
com.haqen.HedeService service = new com.haqen.HedeService();
service.Credentials = new NetworkCredential("username", "password");
Console.WriteLine( service.getServiceName() );
Oyun yazmak için illaki C++ bilmek, OpenGL kasmak gerekmiyor. Zibilyon tane oyun geliştirmeye yönelik kütüphaneler var artık. Ben AMOS ile başlamıştım
Sonra Blitz Basic ile uğraştım bir süre. Fakat adı üstünde, basic, istediğim gibi kullanamayınca bıraktım. Sonra Irrlicht baktım çok kısa, sonra da bıraktım bir süre araştırmayı. Sonra 2 sene önce bu konudan arkadaşlara bahsederken “len Java’da böyle bir engine olsa ne süper olurdu” demiş, önce JPCT‘ye ulaşmış biraz onu kurcalamıştım, dökümantasyon namına pek birşeyi olmadığı için üzülürken JMonkey Engine‘e rastlamıştım. Geçen sene Java One’da da sunum yapan JMonkey Engine 3d uygulamalar yazmamız için oldukça güzel bir kütüphane. Örneğin gökyüzü (skybox) yapmak için uğraşmak gerekmiyor, Skybox nesnesi yaratmamız ve ona texture kaplamamız yeterli.
Keşke biraz daha dökümantasyonu güzel olsaydı dedirtmiyor değil ama 3d uygulamayı java ile yazmanın büyük avantajı da var, bir kere tüm işletim sistemlerinde çalışıyor (Windows, Linux, Macos…) ve JNLP sayesinde web üzerinden tıklayarak da çalıştırılabiliyor. Applet olarak da kullanılabiliyor ancak o zaman tüm kaynakları kullanamıyoruz, pek hoş çalışmıyor.
Çok ufak bir uygulama yazdım, ona buradan ulaşabilirsiniz, WASD tuşları ile hareket edip farenin sağ tuşuna basılı tutup etrafa bakabiliyorsunuz.
Vakit olsa JMonkey Engine ile neler neler yapılır. En iyisi ben kendime kandıracak yeni insanlar bulayım

JMonkey Engine ile yapılmış bir oyun örneği
Benim de en çok ilgimi çeken ve çalışmak istediğim konu olan “cloud computing” bu aralar çok moda. İnternetin devlerinden Google, Amazon, Facebook ve onlara yetişmeye çalışan Microsoft, hepsi kendi gigantik alt yapılarını insanların kullanımına açıyorlar. Amazon’un S3 (Simple Storage Service) ve EC2 (Elastic Compute Cloud) web servisleri var, Microsoft’un Azure’u var.
Google da App Engine ile kendi alt yapısını ucundan bize açıyor. Google’ın ilişkisel veritabanı sistemleri yerine kullandığı meşhur Datastore’u, mail ve image apileri, login mekanizması ve url fetch özelliklerini kullanarak hemen hemen herşeyi yapmak mümkün. Önce Python desteği ile başladı şimdi de Java desteği sunuyor. Bir türlü python ile test edemediğim için Java desteği gelince artık test etmek gerek diyerek biraz inceleyip ufak bir uygulama yazdım.
Java ile App Engine uygulaması yazmak Google zaten yeterince döküman sunduğu ve Eclipse plugin’i varolduğu için oldukça kolay. Datastore kullanmak da hiç zor değil, JDO ya da JPA üzerinden kullanabiliyorsunuz. Ben sadece JPA query’si içinde order by kullandığım için patladı ama olsun
App Engine’in de sınırları var. Ancak bu sınırlar paradan haber verince değişiyor. Açıkçası ben uygulama geliştirmekten çok keyif aldım. Yazdığım örnek uygulamaya şurdan erişebilirsiniz.
Son bir senedir JSF ile proje gelistiriyorum. Gercekten baslangicta oldukca hos gelse de zamanla resmen tiksinti vermeye basladi. Nefret etme sebeplerimden birisi cok kotu html kodu uretmesi, bir digeri de XSS acigina sahip olmasi idi.
Evet, Jsf 1.2_08 surumunden onceki implementasyonlarda XSS acigi bulunuyor. Duzeltmek icin bu surum ve daha sonraki surumleri kullanmak icap ediyor.
Web sozkonusu oldugunda bana sorarsaniz `basit en guzeldir`, jsf sucks!
Tomcat, Jboss, Glassfish gibi Java uygulama sunucularında uygulamanızı çalışan sunucuda tekrar yüklerseniz her zaman PermgenSpace hatası alırsınız. Bu gıcık hatadan kurtulmak amacıyla çok araştırıp şu parametrelere ulaşmıştım:
-XX:MaxPermSize=128m
-XX:+CMSClassUnloadingEnabled
-XX:+UseConcMarkSweepGC
Bu parametreler yeniden yükleme sonrası Permgen hatası almanıza engel oluyor ancak bu seferde transaction hataları alıyorsunuz. Varolan bağlantılar patladığından başarılı bir deploy işlemi olmamış oluyor. Oysa az evvel öğrendiğim (mysql için) bir datasource parametresi bu olayı tamamlıyor gibi görünüyor:
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
Bunun yerine bağlantı aktif mi diye sql yazabileceğimiz bir alternatifi varmış onu da öğrenince yazıcam.