Showing posts with label Java Information. Show all posts
Showing posts with label Java Information. Show all posts

Tuesday, December 3, 2013

HTML Kodundan veri almak?


Şifreli Jar dosyası nasıl oluştururuz (encrypted Jar file)


Wednesday, December 12, 2012

Önemli olan hangi dili bildiğin değil bildiğin dilin en iyisi olmak.




Her zaman şöyle bir yanliş yapar yazilim dunyasına giren arkadaşlar bütün dilleri öğrenmek ister yada bir dili öğrenmeye çalışır bakarki olmuyor başka dile geçer ama "sorun dilde değil". Yazilimci olmak elbeteki kolay değil seçtiğiniz dil sizi zorladiğinda hemen kaçmayin ve mucadele edin inaninki sonunda siz kazanacaksiniz.

Java ogrenmek icin faydali formlar



Sunday, November 18, 2012

Copy/Paste Programcı (Yazar :Özcan Acar)


Ayrintili bilgi icin tikla

Internetin bu kadar büyümesi ve özellikle Google gibi arama motorlarının günlük iş hayatımızın bir parçası haline gelmesi biz programcılar için ne kadar hayırlı oldu, bilemiyorum. Pek te hayırlı olmadığı kanısındayım. Açıklamaya çalışayım.

Çalıştığım projede bir çalışma arkadaşımın masasında algoritmalarla ilgili kalınca bir kitap gördüm. Havadan, sudan konuşurken kendisi böyle kitapların artık gereksiz olduğunu, çünkü internette istediğin algoritmayı bulup, kullanabildigini söyledi. Doğru, haklıydı.
Bugünlerde Pratik Spring Core 3 isminde yeni kitabım üzerinde çalışmalarımı sürdürüyorum. Spring ile XML bazlı deklaratif transaksiyon yönetimi konfigürasyonu nasıl yapılır diye internette araştırma yaparken, birkaç klasik blog sayfasına rastladım. Bu klasik blog yazılarını tanırsınız. Basit bir örnek üzerinde belli bir konfigürasyonun nasıl yapıldığını gösterirler. Bu örnekleri copy/paste yaparak programcının kendi uygulamasına eklemesi zor değildir. Zamanında az yapmadık. Copy/paste işlemi esnasında insan keşfettiği örneğin altındaki konseptlerin ne olduğunu sorgulamıyor. Programcı için önemli olan bir şeyleri çalışır hale getirebilmek. Ve bunu başardıktan sonra, “ya, bunu çalışır hale getirdim ama, bu işin temelindeki konseptler nelerdir” şeklinde bir sonuca varmıyor ya da varamıyor. İşte internet üzerinden bilgiye bu kadar hızlı, sorgusuz ve sualsiz erişmenin getirdiği hayırsızlıkta bu noktadan itibaren başlıyor. Programcı bir bilgiyi edindi ve kullandı. Ama o bilginin neyi temsil ettiğini, yani temelinde neler olduğunu bilmiyor. Spring ile XML bazlı deklaratif transaksiyon yönetimi konfigürasyonu örneğinde 3 satırlık copy/paste edilen XML konfigürasyonunun altında AOP (Aspect Oriented Programming) ve Proxy tasarım şablonu gibi konseptler var. İki satırlık konfigürasyonu kopyaladım, ama temelinde yatan bu bilgileri kopyalayamadım. Bunlar internette kalmaya devam etti. Benim kopyaladığım cansız, iki satırlık kod parçası.
Kod örneğiyle, kodun temelindeki konseptlerin zahmetsiz bir şekilde beyne nasıl kopyalandığını Matrix filmede gördük. Neo anında Karate-Kid olmuştu. Bizim böyle bir imkanımız yok. Böyle bir şeyin gelecekte mümkün olacagını da düşünmüyorum. Geriye kalan, kaynağını bulup, copy/paste yaptığımız bilgilerin temelinde yatan konseptleri ögrenmek ve uygulamak. O zaman hayırsız olarak tabir ettiğim işlemi hayırlı bir işleme dönüştürebiliriz.
Copy/paste zihinlere o kadar yerleşmiş ki, bilgiye sahip olmanın değil de, bilgiye nasıl ulaşabileceğini bilmenin daha önemli olduğunu savunanlar var. Bu artık copy/paste filozofisinin mükemmelleştirilerek, getirildiği en son noktadır, yani bu akımın en tepesindeki noktadır. Bu filozofiye sahip olanların, iş görüşmelerinde bu tür ifadelerde bulunmamalarını tavsiye ediyorum, çünkü iş verenin en sevmediği ve iş görüşmesini anında sonlandırabileceği durumların başında, iş görüşmesi yaptığı şahsın “ufak bir internet araştırması ile bu sorunu çözebilirim” tarzı söylemlerde bulunmasıdır. Böyle bir şey söyleyen şahıs aslında “ben bu bilgiye sahip değilim, başkaları sahip, ama bir bakayım, bakalım, bir yerlerden bulabilir miyim” demektedir. Böyle bir şey söyleyen bir programcıyı siz olsanız işe alır mıydınız?
İyi bir programcı olabilmek için iyi bir temele sahip olmak gerekir. Bu temel edinilmiş ve zaman içinde edinilen bilgiden oluşur. Programcı tüm yeteneklerini bu temel üzerine inşa eder. Zaman zaman internetten bir şeyleri copy/paste etmek suç ya da günah değildir. Bu hepimizin yaptığı bir şeydir. Lakin programcı copy/paste yaptıktan sonra, copy/paste yaptığı kod parçasının temelinde yatan bilgiyi sahip olduğu temele eklemekle yükümlüdür. Aksi taktirde bu bakkaldan bir sakız alıp, parasını ödememek gibi bir şey olur. Copy/paste yapılan şeyin bedeli ödenmelidir. Copy/paste edilen kodun üzerinde fiyat etiketi olmadığı için beleş sananlar vardır. Hayır, beleş değildir. Bedeli ödenmeden kullanılan bilgi, temeli sağlam olmayan bir binanın en ufak bir rüzgar esintisinde sallanması misali programcıya zarar verir.
Copy/paste yapalm, ama bedelini ödeyerek…


Ayrintili bilgi icin tikla



EOF (End Of Fun)
Özcan Acar



Monday, September 3, 2012

Port-u dolu veya bos olmasini kontrol etmek

cmd aciyoruz.

telnet ip port

telnet 170.30.30.32 8080

Tuesday, August 21, 2012

Sertifika (Göz Boyamaca )

Size herhangi bir şey satmak için kapınıza gelen bir satış temsilcisine ne gözle bakarsınız? Ben bu durumla karşılaşınca, beynimde otomatik olarak şahsı başımdan savma rutinleri devreye giriyor. Birilerinin benim üstüme bu şekilde gelerek bana bir şey satması imkansız. Bu inisiyatifin benden kaynaklanması lazım.


Yazılım sektöründe de durum anlaşılan farklı değil. Birileri biz yazılımcılara devamlı bir takım, ne işe yaradıkları belirsiz sertifikalar satmaya çalışıyor. Tek dertleri para kazanmak. Kullandıkları ve insanları en çok etkileyen argümanları ise yazılım kalitesini artırmak ve eleman yetiştirmek için çaba sarfediyor oluşları. Yesinler! Ben bunu ispatlayan ne bir araştırma ne de bir rapor gördüm.

Bir gün içinde alınan sertifikalar var. Artık para basma makinasının sesi o kadar yükselmiş ki utanıp, sıkılıp, hadi daha fazla dikkat çekmeden para basmaya devam edelim ama sertifikayı vermeden önce çakma bir imtihanla sertifikanın alınmasını zormuş gibi gösterelim diyenler ve bunu uygulayanlar var. Daha önce herkese para karşılığında dağıttıkları sertifikaları şimdilerde dandik bir imtihanla vermeye devam ediyorlar. Ne kadar büyük bir gelişme! Artık yazılım sektörü bu sertifikalarla iş başına gelen yazımcıların meydana getirdikleri yazılım kalitesinde boğulup gidecek. Bu sertifika satıcıları bana cennetten tapu satanları hatırlatıyor. Bir gün içinde sertifika almış ve karşıma geçip bana çevik süreçlerin nasıl işlediğini anlatmaya çalışan birisini ben ciddiye almıyorum.

Peki yazılımcılar neden böyle şeylere aldanıp, zor kazandıkları paralarını pencereden dışarı atıyorlar? Ha ben gidip bir günlük bir eğitim almışım, akabinde bir test ile bana sertifika verilmiş, ha bu adamlar benim kapıma gelmişler ve sertifikayı bana kapıda satmışlar. İkisi de aynı şey değil mi? Neden bunlara aldanıyor insan?

Devir ne yazık ki göz boyama devri. İş görüşmelerinde sertifikasyona gereğinden çok fazla önem veriliyor. İşveren eğer bu programcı A, B, C sertifikalarına sahipse, iyi bir programcı olmalı diye düşünüyor. Ne kadar yanlış! Bu sadece programcının bir yolunu bulup, sertifikayı aldığını gösterir. Ne kadar iyi bir programcı olduğunu göstermez.
Çok gezen mi çok bilir, çok okuyan mı? Çok sertifika sahibi mi çok bilir, çok pratik yapan bir programcı mı?

Bir programcıyı iş başına getirme kriteri sahip olduğu sertifika kolleksiyonun genişliği olmamalı. Bu sertifikalar programcının sahasında ne kadar iyi olduğunun göstergesi olamaz. Bir programcının iyi olup olmadığını anlamak için, onunla bir gün boyunca çalışıp, hangi yeteneklere ve bilgi seviyesine sahip olduğunu anlamak zor değil. Buna alternatif olarak işveren programcının eski çalışma arkadaşlarından referans getirmesi isteyebilir. Eski patronundan referans demedim, eski mesai arkadaşlarından dedim. Programcılar birbirlerini tanır, karşılıklı yetenek, beceri ve bilgi seviyelerini tartabilirler. Hiçbir programcı, iyi bir seviyede olmayan bir programcı için iyi bir programcı diyerek, kendi itibarını zedelemek istemez. Bu yüzden programcının eski mesai arkadaşları her zaman onun hakkında bilgi edinmek için kullanılabilecek güvenli bir kaynaktır.

Bizim yazılımcı olarak bu sertifika sövüşlemesine gelmeden, kendimizi yazılımcı olarak nasıl geliştirebiliriz sorusuna cevap aramamız gerekir. Eğer programcı mutlaka bir sertifika sahibi olmak istiyorsa, o sertifikayı edinsin. Ama kendisi için yapsın, etrafta A,B,C sertifikalarım var diyerek, böbürlenmek için ya da daha kolay iş bulurum düşüncesiyle değil.

Ambalajın güzelliğine aldanmayalım. Ambalajın içinden ne çıktığı önemli. Sertifikaların çok büyük bir kısmı güzel ambalajdan başka bir şey değil. Bunu Oracle Certified Master, Java EE Enterprise Architect (SCEA 5) sertifikası sahibi olarak söylüyorum.

EOF (End Of Fun)
Özcan Acar


www.kurumsaljava.com

Wednesday, August 8, 2012

String compareTo

public Int compareTo(String str)
Diğer metodumuz olan compareTo(),  equals() metoduna göre biraz daha gelişmiştir. Çünkü kelimeleri sadece eşit olup olmadıkları ile değil, sözlük sıralamalarına göre de karşılaştırabilir ve aralarındaki farkı + veya – değerde bir sayı yani Integer olarak dönebilir. Bu metotta karşılaştırma iki metindeki yazıların Unicode değeri ile yapılır.
Burada kelimelerin sözlük sıralamaları önemlidir. Eğer bir kelime sözlükte diğer bir kelimeden önce geliyorsa o sözcükten küçüktür ve eğer sonra geliyorsa da o sözcükten büyüktür.
  • Eğer karşılaştırma sonucunda iki değer birbirine eşitse 0 sayısı döner.
  • Eğer ilk String diğerinden büyükse 0′dan büyük bir değer döner.
  • Eğer ilk String diğerinden küçükse 0′dan küçük bir değer döner.
Sonucun Int dönmesi bize kelimeleri sözlük sıralamasına göre karşılaştırmada kolaylık sağlar.

String nesnesi  birbirine göre uzunluk, sözlük sıralaması ve küçük büyük harflerine göre karşılaştırılır. Eğer küçük büyük harflere göre karşılaştırma istemiyorsak compareToIgnoreCase metodunu kullanırız.,

Tuesday, June 26, 2012

File IO Buyuk Olculu Dosyalarin Okunmasi

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

vm'i başlatırken -Xms500M -Xmx500M parametreleri ile heap size değiştirebilirsin, ms initial heap size, mx maximum heap size dır. Bunlara uygun değerleri vererek kullanmak mümkün, uygulaman ide içerisinde ise run options gibi bir menü ile bunu yapabilirsin, eğer jar ise command prompt tan "java -jar uygulama.jar -Xms500M -Xmx500M" ile uygulama başlatılır ve 500MB heap alanı jvm için ayrılmış olur.


http://www.btsoru.com/questions/1879/file-io-buyuk-olculu-dosyalarin-okunmasi

Thursday, May 24, 2012

Eclipse kısa yol tuşlarını (shortcut key) kullanımi

STRG + SHIFT + T = Sinif arama 
STRG + SHIFT + R = Kaynak dosya arama 
STRG + SHIFT + F = Kod formatlama 
STRG + SHIFT + O = import siniflarin organizasyonu 
ALT + SHIFT * R = Isim degistirme (degisken, metot, sinif) 
ALT + SHIFT + M = Yeni metot olusturma 
CTRL + SHIFT + R = Open Resource
CTRL + SHIFT + O = Organize Import
ALT + SHIFT + S sonra R = Generate Getter and Setter
ALT + LEFT
ALT + RIGHT = tab gecisleri
CTRL + SHIFT + X (uppercase) name = NAME
CTRL + 7 = comment
CTRL + 1 = getter setter
ALT + SHIFT + F1= plugin kodlarini gorebiliyorsunuz 
ALT + SHIFT + M = yeni methodu oluştur, kod içinde kullanılan aynı olan yerler var ise de yeni oluşturduğunu koy süper.


Asagidaki link-ten alinmistir daha ayrintili bilgi icin bu link btsoru.com tiklayin



 
 

Thursday, March 1, 2012

Java equivalent to #region in c#

Bugunku yazimda yazdiginiz kodun gozunuzu yormadan her metoda asagidaki yazdigin satirin arasina alarak tek satir indirgeyip gerekli oldugunda kodun oldugu yeri mouse yardimi ile tiklayinca kodu gormenisi saglar.


Wednesday, February 29, 2012

Variable Info

Public class test{
static void go(Integer x){
System.out.println("Integer");
}
static void go(long x){
System.out.println("long");
}
static void go(byte x){
System.out.println("byte");
}
static void go(char x){
System.out.println("char");
}
public static void main(String[]args) {
int i=5;
go(i);
}

Console: netice long olacaq.cunki java setir setir oxuyur.ilk once ozone uygun primitive tipi axtarir.yeni kohne usuldan istifade edir.eger ozune uygun primitive zeif olarsa o zaman ozunun wrapper novunu secir.serte gore:
1. Primitive tip
2. Wrapper
3. “…” istifade olunur.
Int longun terkibinde oldugundan ve long evvelde geldiyi ucun longu secir.yeni
X=I;
Olur.int long-a menimsedilir.(32 bit 64 bite menimsedilir).eger int-e uygun int,long double olsa o zaman int ilk once ozone en yaxin olan int-I goturecek.eger int olmasa o zaman longu goturecek.yeni ozune uygun olan bitden yuxariya dogru olanlari goturecek.

Saturday, February 4, 2012

Kalitimda metodun static olmasi

Asagidaki kullanim dogru bir kullanim cunku burada kaltim duzgun gerceklestirilmis.

public class Animal{
public void sound(){
System.out.println("Huuuuuuuu");
}
}

public class Dog extends Animal{

@Override
public void soud() {
System.out.println("Hav Hav");
}
}


Asagidaki kullanim yanlis cunku kalitimda static method override olmaz.

public class Animal{
public static void sound(){
System.out.println("Huuuuuuuu");
}
}

public class Dog extends Animal{

//Exception static method override
@Override
public void soud() {
System.out.println("Hav Hav");
}
}

Tuesday, January 31, 2012

Enum-un Method-da Declare Edilmesi

Enum method'un icinde declare olunmaz.

public class Test{
public static void main(String args[]){
enum Animal{
DOG , CAT
}
}
}

Bu seklde bir yazilm hatalidir.

Degisenlere Degerlerin Atanmasi

Not : Global degisenler herhangi bir deger verilmeyince default olarak tipe uygun default degeri alir(int 0 , String null , double 0.0 , boolean false). Ama local degisenler tanim;andiklari zaman o anda degerleri verilmeli verilmese Compile Error verir

public class Test{
static int x ;

public static void main(String args[]){
int y = 5;
y = x;
System.out.priintln("y = "+y)
}
}

//CONSOLE
y = 0

public class Test{

public static void main(String args[]){
int x;
int y = 5;
y = x; //Comple Error
System.out.priintln("y = "+y)
}
}

//CONSOLE

Tuesday, February 15, 2011

Java nasil calisir?

Bir java yazilimi su sekilde gelistirilir:

  1. Programci java kodunu yazar.
  2. Bu kod bir java derleyicisi ile derlenir. Sonucta bytekod adi verilen bir tur makine kodu ortaya cikar. Platform bagimsizligini saglayan sey bytecode'dir. Cunku bir kere bytecode olustuktan sonra yazilim tum isletim sistemlerinde calisabilir.
  3. Bu byte kod Java virtual Machine (Java Sanal Makinesi) tarafindan adim adim isletilir. Asagida java ve C++ kodunun gecirdigi asamalar gosterilmistir.

    Simdi bu adimlari iyice bir inceleyelim

    Java kodunun yazilmasi.

    java nesneye yonelik bir dil oldugundan tum yazilim siniflar ve nesneler uzerinden yurutulur. Siniflar uygulamadaki nesnelerin tanimlandigi kod parcalaridir. Java'da her bir sinif bir dosya icerisinde yer alir. Dosyalarin uzantilari .java seklindedir. Dosya adi ise icinde tanimlanan sinif ile aynidir. Ornegin, BenimSinif.java gibi.

    Derleme

    Derleyici kisaca herhangi bir editor ile yazilan java kaynak kodlarini (yani .java uzantili siniflarin yer aldigi dosyalari) java sanal makinesinin calistirabilecegi bir tur makine dili (assembler) olan Bytecode'a donusturur. Bu donusturulen bytekod ise (.class ) dosyalari icerisinde saklanir. Java kodunu derlemek icin bir java derleyicisine ve java kutuphanelerine ihtiyaciniz var. Su anda iki derleyici yaygin olarak kullanilamktadir. Bir tanesi Sun'in SDK'si ile birlikte gelen javac. digeri ise IBM'in acik kodlu derleyicisi jikes. Benim yaygin olarak kullandigim Jikes, cok hizli derlemesi ile unlu olsa da en son java yazilimlarini derlemek icin javac'ye ihtiyac duyulabilir. Ayrica linux altinda derleme yapmak icin gnu lisansi ile gelistirilen acik kodlu Gnuj kullanilabilir. Derleyici ve kutuphanelerin bulundugu (Java API) uygulamaya "J2SE SDK" adi verilmistir.

    Calistirma ve Java sanal makinesi.

    Sanal makine donanimdan bagimsiz yazilim gelistirme ihtiyacina cevap verme amaciyla gelistirilen bir teknolojidir. Java'nin temel felsefesi olan "bir kere yaz, her yerde calistir" sanal makine sayesinde varolmustur. Sanal makineyi bir yonden bir tur hayali bir mikroislemci gibi dusunebiliriz. Gercek tum mikroislemciler (Intel Pentium, AMD Athlon, Sun Sparc vs) belirli bir grup komutu islemek uzere tasarlanmistir. Bu komutlara islemcinin komut kumesi adi verilir. Ornegin x86 komut kumesi gibi. Tum yazilimlar calisabilmek icin once bu komut kumesine donusturulur, daha sonra islemci bu komutlari sira ile gercek islemci komutlarina donusturup isletir. Java Sanal makinesi de Bytekod komut kumesini tipki islemci gibi adim adim isletir. Java'nin interpreted bir dil olarak adlandirilmasinin nedeni budur. Bytekod ilkel islemlerin yaninda (ilkel islemler, mikroislemci seviyesi komutlardir, aritmetik islemler, bit islemleri, bellek ve yigin islemleri vs.) sanal makinenin uzerinde calistigi isletim sistemine yonelik islemler de barindirir. Bu sayede Java Virtual Machine yazici, seri port, grafik, dosya servisi, ag baglantisi gibi yazilim ve donanim servislerine erisim yapabilir.

    Java'nin dogrudan bytecode calistirmasi performansinin dusuk olabilecegi izlenimini verebilir. Ancak, JVM tasarimi gecen 10 yilda cok degismis ve gelistirilmistir. Su anda java'nin performansi cogu alanda C++'in performansina yakin bir seviyededir ve islemci hizi ve bellek miktarinin her gecen yil katlanarak artmasi ile performans konusu cogu uygulamada artik ikinci planda kalmistir. Asagida cesitli platformlar icin java'nin calismasi basit blok sema olarak gosterilmistir. Eger sozkonusu dil C++ olsayid uc ayri kod yada kodda uc ayri #ifdef vs tanimi, uc ayri obje dosyasi olusturulmasi gerekirdi ve cogu uygulamada C++ projesi sadece tek platforma destek verirdi (win32 gibi)
           

Bu konunun anlasilmasi icin bir uygulama yapalim

                                           public class Selam { 
                                                    public static void main(String args[]){
                                                                System.out.println("Selamlar !"); 
                                                      }
                                            }












 Bu yazi alintidir Asagidaki linkten daha detayli bilgi alabilirsiniz Hocamizin Eline saglik
http://www.uslanmam.com/java/15164-java-nedir-nasil-calisir.html 

 Bu yazidaki uygulama alintidir Asagidaki linkten daha detayli bilgi alabilirsiniz Altuğ Bilgin ALTINTAŞ  Hocamizin Eline saglik
http://www.kodcu.com/kitap/java-kitap
Java Programalama Diline Giriş.pdf

JAVA NIN TARİHÇESİ VE ÖZELLİKLERİ

Şu anda dünyadaki en popüler programlama dillerinden biri olan Java, 1990’lı yıllarda SUN bilgisayar şirketince akıllı elektronik ev araçları  projesi çerçevesinde mikrodalga fırınları, buzdolapları , televizyonlar, uzaktan kumanda gibi cihazların birbiriyle haberleşmesini sağlamayı amaçlayan bir proje içerisinde geliştirilmeye başlandı. Orijinal ilk adı Oak’dı ve bu  ad dilin yaratıcıları James Gosling, Patrick Naughton, Chis Wartdh, Ed Frank ve Mike Sheridan tarafından konulmuştu. Daha sonra bu isimde başka bir programlama dili olduğu anlaşılınca o anda bir kahvehanede kahve içen programlama gurubu tarafından kahve markasından esinlenerek Java olarak değiştirildi.
 Akıllı elektronik ev araçları pazarı SUN gurubunun tahminlerinden çok daha yavaş bir gelişme gösteriyordu. Bu yüzden Java dili projesi ticari bir geliştirme projesi olarak büyük olasılıkla iptal edilecekti. 1993 Yılında "World Wide Web" büyük bir atılım göstererek bütün dünyaya yayılmaya başladı. Javanın Dinamik Web sayfaları hazırlamadaki büyük potansiyelini gören SUN şirketi projeyi bu tarafa yönlendirdi.
Mayıs 1995 de SUN javayı büyük bir konferansta tanıttı. Program iş dünyası tarafından derhal büyük bir ilgiyle karşılandı. Java modern bilgisayar dünyasının ses, grafik işlem, haberleşme gibi ihtiyaçlarına cevap verebilen ve ticari gayeler için hazırlanan bir Programlama dili olarak daha önceki bilgisayar dillerinin hiç birinin kapsayamadığı özellikleri içermekteydi. Bunun yanı sıra dil komut yapısı olarak C++ diline çok yakın olması da öğrenilmesini kolaylaştırıyordu. SUN Javayı "World Wide Web" de kullanmak isteyen herkese ücretsiz olarak sundu. Java internette yayınlanmasının ardından çok büyük bir patlama yaşadı. 1997 ye gelindiğinde dünyadaki bütün bilgisayar okullarında temel bilgisayar dili olarak gösterilmeye başlandı. Dünyada şu anda hala en çok kullanılan bilgisayar dili olan C++ dilinin, yapılan hataları tam olarak denetlememesi programın çalışma hızını arttırma yönünden iyi bir özellik olsa da profesyonel programcılar dışında kullanılmasını sınırlandırıcı bir etki yapıyordu. Java ise bütün hataları bildiren yapısı ve modern bilgisayarın bütün fonksiyonlarına ulaşabilen kütüphaneleriyle programcıların çok daha kolaylıkla öğrenebileceği bir dildir. Burada hemen şunu da belirtelim. C dili hızlı çalışma amacı birinci planda tutularak yaratılmış bir dildir. Javada ise emniyet ilk planda yer almıştır. Hız açısından düşünüldüğünde java, C (ve C++) diliyle rekabet edemez. Zaten program derleyicisi de C++ dilinde yazılmıştır.
Javanın diğer önemli bir temel özelliği Nesne kökenli (object oriented) bir dil olmasıdır. Nesne kökenli diller, nesneleri gerçek dünyadakine daha benzer bir yapıda tanımlayarak anlaşılmalarını kolaylaştırırlar. Nesneleri gerçek dünyadaki gibi masa, sandalye, bilgisayar gibi tanımlayarak programlamak insan beyninin anlaması açısından çok daha kolaydır. Bundan önceki tam nesnel kökenli programlama dillerinden hiçbiri çok yaygınlık kazanmamıştı. Bu tür dillere Smalltalk,u örnek verebiliriz. C++ nesnel kökenli programlama yapabilen bir dildir. Fakat yapısal (structural) bir programlama dili olan C dilinin bir uzantısı olarak geliştirildiğinden tam anlamıyla nesnel kökenli bir dil olduğu söylenemez.

Java dilini geleceğin dili yapan diğer bir özelliği de çok kullanımlı (multi-tasking) ve paralel kullanımlı (multi-treading) bir dil olmasıdır. Çok kullanımlılık birden fazla işlemin aynı anda yapılabilmesinin tanımıdır. Paralel kullanımlılık ise birden fazla programın aynı anda hafızayı beraber kullanılabilmesidir. Örnek olarak Word ve Excel programlarının Windows NT ortamında aynı anda kullanılmasıdır. ADA gibi bazı eski Program dillerinde çok kullanımlılık programlanabiliyordu. Paralel kullanım olanaklarını sunan ilk bilgisayar dili ise javadır. Paralel kullanım paralel programlama kavramından ayrıdır ve karıştırılmamalıdır. Paralel programlanmada birden fazla Bilgi işlem Ünitesine (CPU ) ayrı programlar veya bir programın ayrı parçaları gönderilir. Paralel kullanımda ise bir CPU nun kullanım zamanı küçük parçalara ayrılarak değişik Program veya Program parçacıkları bu zaman paketçiklerini paylaşarak kullanırlar.
Javayı önemli bir Program dili haline getiren en önemli  özelliği ise kullanılan bilgisayardan bağımsız olmasıdır. Javada yazılan bir Program Unix, Machintosh, Windows 95 veya Windows NT veya herhangi bir 32 bit makinada hiç değiştirilmeden kullanılabilir. Java programlarının grafikleri "Wold Wide Web" sayfalarının belge işlem sistemi olan html (hypertext markup language) ile aktarılır. Bu yüzden html ve java programlarını birlikte kullanmak ve java programlarını gerçek zamanda www sayfalarında göstermek mümkündür
Javanın HTML diliyle kullanılabilmesi, bazı kişilerde htmlin bir parçası olduğu gibi bir kavram gelişmesine yol açmiştir. Programlamaya yeni başlayanlar sık sık html ile javayı birbirine karıştırırlar veya javanın HTML'nin bir uzantısı olduğunu düşünürler. Bu temelde oldukça yanlış bir varsayımdır. HTML,  internet belgelerini birbirine bağlamak amacıyla geliştirilmiş bir belge işlem sistemidir ve bir programlama dili değildir. HTML ile Java’nın tek gerçek ilgisi HTML deki applet komutudur. Bu komut yardımıyla java dilinde yazılmış programların sonuçları HTML ortamına dinamik olarak aktarılabilir. (Kaynak: Turhan Çoban)

Java NEDİR ?

Java ™ platformu bilgisayar ağının varlığı da göz önüne alınarak uygulamaların/programların farklı işletim sistemleri üzerinde çalıştırılabilmesi düşüncesiyle geliştirilmiş bir teknolojidir. Java ™ platformu hem programlama dili, hem de bir ortam olarak düşünülebilir. Programlama dili olarak, açık kodlu, nesneye yönelik (object-oriented), güvenli, sağlam, İnternet için elverişli bir teknolojidir denilebilir
Java programlama dili ve  bu dile bağlı alt teknolojiler, VB™ veya Borland Delphi™ gibi sadece belirli bir firma tarafından geliştirilmiş ürünler değillerdir. Java ve ona bağlı alt teknolojiler, Sun MicroSystems tarafından tanımlanmış belirtimlerden (specifications) oluşmaktadır. Bu belirtimlere sadık kalan her yazılım firması Java Sanal Makinası, kısaca JVM (Java Virtual Machine), veya Java programlama diline bağlı alt teknolojiler yazabilir (örneğin Application Server - Uygulama Sunucusu). Eğer bu belirtimlere sadık kalınmayıp standart dışı bir JVM veya Java programlama diline bağlı alt teknolojiler yazılmaya kalkışılırsa hukuki bir suç işlenmiş olur. 
Peki belirtim (specifications) ne demektir? Sun MicroSystems, JVM veya Java programlama diline bağlı alt teknolojiler yazmak için belirli kurallar koymuştur; bu kurallar topluluğuna “belirtimler” denir. Örneğin çöp toplama sistemi (garbage collector).

Çöp toplama sistemi daha önceden oluşturulmuş, ancak kullanılmayan ve bellekte boşu boşuna yer işgal eden nesneleri belirleyerek otomatik olarak siler. Böylece Java programcısı “acaba oluşturduğum nesneyi bellekten silmiş miydim?” sorusunu sormaktan kurtulurlar, ki bu soru C++ programlama dillinde uygulama yazan kişilerin kendilerine sıkça sorması gereken bir sorudur. Şimdi bir yazılım firması hayal edelim, adının ABC yazılım firması olduğunu varsayalım. Bu firma, eğer bir JVM yazmak istiyorsa, bu çöp toplama sistemini, oluşturdukları JVM’in içerisine yerleştirmeleri gereklidir. Çünkü Sun MicroSystems’ın belirtimlerinde, çöp toplama sistemi koşuldur! Eğer ABC firması üşenip de çöp toplama sistemini, oluşturdukları JVM’in içerisine yerleştirmezse hukuki bir suç işlemiş olur.

Şu anda en yaygın kullanılan JVM’ler, IBM ve Sun Microsystems’ın üretilmiş olan JVM’lerdir; ayrıca, HP, Apple gibi bir çok firmanın üretmiş oldukları JVM’ler de bulunmaktadır.

Java ile Neler Yapılabilir?
Java diliyle projeler diğer programlama dillerine göre daha kolay, sağlıklı ve esnek şekilde yapılması mümkün olur. Java diliyle gerçekleştirilebilecek uygulamalardan bazıları şunlardır:
·      GUI  (Grafiksel Kullanıcı Arayüzü) uygulamaları, Applet’ler
·      Veri tabanına erişimle ilgili uygulamalar
·      Web tabanlı uygulamalar
·      Dağınık bileşenler (Distributed components) (örneğin  EJB, RMI, CORBA).
·      Cep telefonları, Smart kartlar için uygulamalar.


Bu yazi alintidir Asagidaki linkten daha detayli bilgi alabilirsiniz Hocamizin Eline saglik
http://imajbilgisayar.blogcu.com/java-dersleri-1/4876866

Wednesday, November 10, 2010

JXPATH Uygulamalari

 1.Uygulama :
public class Employee {
    private String name;
    private String surname;
    private int age;
    public Employee() {
    }
    public Employee(String name, String surname, int age) {
        this.name = name;
        this.surname = surname;
        this.age = age;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSurname() {
        return surname;
    }
    public void setSurname(String surname) {
        this.surname = surname;
    }
}


public class Main {
    public static void main(String[] args) {
        Employee e = new Employee();
        e.setName("Abdulkadir");
        e.setSurname("Selcukoglu");
        e.setAge(27);
        JXPathContext context = JXPathContext.newContext(e);
        Object n =  context.getValue("name");
        System.out.println(n);
    }
}


//Console Output
Abdulkadir




 2.Uygulama :
public class Employee {
    private String name;
    private String surname;
    private int age;
    public Employee() {
    }
    public Employee(String name, String surname, int age) {
        this.name = name;
        this.surname = surname;
        this.age = age;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSurname() {
        return surname;
    }
    public void setSurname(String surname) {
        this.surname = surname;
    }
}

public class EmployeeBean {
    List list =  new  ArrayList();
    public EmployeeBean() {
        list.add(new Employee("Abdulkadir","Selcukoglu", 27));
        list.add(new Employee("Ertugrul","Aslan", 26));
        list.add(new Employee("Rasim","Imanov", 35));
        list.add(new Employee("Nazim","Memedov", 25));
        list.add(new Employee("Murat","Tagiyev", 24));
    }
    public List getList() {
        return list;
    }
    public void setList(List list) {
        this.list = list;
    }
}

public class Main {
    public static void main(String[] args) {
        EmployeeBean b = new EmployeeBean();
        for (Employee e : b.list) {
            JXPathContext context = JXPathContext.newContext(e);
            Object n =  context.getValue("name");
            Object s =  context.getValue("surname");
            Object a =  context.getValue("age");
            System.out.println(n + "  "+s+"  "+a);
        }
    }
 }

//Console Output
Abdulkadir  Selcukoglu  27
Ertugrul  Aslan  26
Rasim  Imanov  35
Nazim  Memedov  25
Murat  Tagiyev  24

 2.Uygulama : 

 public class Address {
    private String country;
    private String city;
    public Address() {
    }
    public Address(String country, String city) {
        this.country = country;
        this.city = city;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }
}
public class Employee {
    private String name;
    private String surname;
    private int age;
    private Address address;
    public Employee() {
    }
    public Employee(String name, String surname, int age, Address address) {
        this.name = name;
        this.surname = surname;
        this.age = age;
        this.address = address;
    }
    public Address getAddress() {
        return address;
    }
    public void setAddress(Address address) {
        this.address = address;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSurname() {
        return surname;
    }
    public void setSurname(String surname) {
        this.surname = surname;
    }
}

public class EmployeeBean {
    List list =  new  ArrayList();
    public EmployeeBean() {
        list.add(new Employee("Abdulkadir","Selcukoglu", 27,new Address("Turkiye","Mardin")));
        list.add(new Employee("Ertugrul","Aslan", 26,new Address("Turkiye","Gaziantep")));
        list.add(new Employee("Rasim","Imanov", 33,new Address("Gurcistan","Tiflis")));
        list.add(new Employee("Nazim","Memedov", 25,new Address("Gurcistan","Tiflis")));
        list.add(new Employee("Murat","Tagiyev", 26,new Address("Azerbaycan","Baku")));
    }
    public List getList() {
        return list;
    }
    public void setList(List list) {
        this.list = list;
    }
}

public class Main {
    public static void main(String[] args) {
        Address a =  new Address();
        a.setCountry("Turkiye");
        a.setCity("Mardin");
        Employee e = new Employee();
        e.setName("Abdulkadir");
        e.setSurname("Selcukoglu");
        e.setAge(27);
        e.setAddress(a);
        JXPathContext context = JXPathContext.newContext(e);
        Object ulke =  context.getValue("address/country");
        System.out.println(ulke);
    }
}

//Console Output
Turkiye

  3.Uygulama : 
public class Names {
    private String nameList[];
    public Names() {
    }
    public Names(String[] nameList) {
        this.nameList = nameList;
    }
    public String[] getNameList() {
        return nameList;
    }
    public void setNameList(String[] nameList) {
        this.nameList = nameList;
    }
}


public class Main {
    public static void main(String args[]){
        String list[]={"Abdulkadir","Ertugrul","Rasim","Nazim"};
        Names n=new Names();
        n.setNameList(list);
        JXPathContext context = JXPathContext.newContext(n);
        Object o[]= (Object[]) context.getValue("nameList");
        System.out.println(o[0]);
        System.out.println(o[1]);
        System.out.println(o[2]);
        System.out.println(o[3]);
    }
}

//Console Output
Abdulkadir
Ertugrul
Rasim
Nazim


  4.Uygulama :
 
public class Book {
    private String name;
    public Book() {
    }
    public Book(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}


public class Author {
    Book books[];
    public Book[] getBooks() {
        return books;
    }
    public void setBooks(Book[] books) {
        this.books = books;
    }
}



public class Main {
    public static void main(String args[]) {
        Author author = new Author();
        Book bs[] = new Book[3];
        bs[0] = new Book();
        bs[0].setName("Hz Muhammed'in Hayati");
        bs[1] = new Book();
        bs[1].setName("Sahabalerin Hayati");
        bs[2] = new Book();
        bs[2].setName("Guzel Ahlak");
        author.setBooks(bs);
        JXPathContext context = JXPathContext.newContext(author);
        Book b[]= (Book[]) context.getValue("books");
        for (Book k : b) {
            System.out.println(k.getName());
        }
    }
}


//Console Output
Hz Muhammed'in Hayati
Sahabalerin Hayati
Guzel Ahlak



  5.Uygulama :
public class Book {
    private String name;
    public Book() {
    }
    public Book(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}


public class Author {
    Book books[];
    public Book[] getBooks() {
        return books;
    }
    public void setBooks(Book[] books) {
        this.books = books;
    }
}
 
public class Main {
    public static void main(String args[]) {
        Author author = new Author();
        Book bs[] = new Book[3];
        bs[0] = new Book();
        bs[0].setName("Hz Muhammed'in Hayati");
        bs[1] = new Book();
        bs[1].setName("Sahabalerin Hayati");
        bs[2] = new Book();
        bs[2].setName("Guzel Ahlak");
        author.setBooks(bs);
        JXPathContext context = JXPathContext.newContext(author);
        Iterator iter = context.iterate("books[position() < 4]");
        while(iter.hasNext()){
            Book bb = (Book) iter.next();
            System.out.println(bb.getName());
        }
   }
}

//Console Output 
  Hz Muhammed'in Hayati
Sahabalerin Hayati
Guzel Ahlak


  6.Uygulama 

   
public class Address {
    private String country;

    private String city;

    public Address() {
    }

    public Address(String country, String city) {
        this.country = country;
        this.city = city;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }
}

public class Employee {
    private Map addresses = new HashMap();
    public Employee() {
        addresses.put("home", new Address("Turkiye","Mardin"));
        addresses.put("office", new Address("Azerbaycan","Baku"));
    }

    public Map getAddresses() {
        return addresses;
    }

    public void setAddresses(Map addresses) {
        this.addresses = addresses;
    }
 }

 public class Main {

    public static void main(String args[]) {
        Employee emp = new Employee();
        JXPathContext context = JXPathContext.newContext(emp);
        String cou = (String) context.getValue("addresses/home/country");
        String ci = (String) context.getValue("addresses/home/city");
        System.out.println(cou);
        System.out.println(ci);
        String cou2 = (String) context.getValue("addresses/office/country");
        String ci2 = (String) context.getValue("addresses/office/city");
        System.out.println(cou2);
        System.out.println(ci2);
    }
}
 

//Console Output
Turkiye
Mardin
Azerbaycan
Baku




Sunday, October 17, 2010

Garbage Collector nedir?

 Bu yazi http://www.cemkefeli.com/post/2009/10/02/JAVA-Garbage-Collector-nedir.aspx bu blogtan kopyalanmistir yazan hocamizin ellerine saglik...
JAVA - Garbage Collector nedir?
by Cem Kefeli
2. Ekim 2009 04:19

Herhalde birçoğumuz o meşhur "Segmentation Fault" hatası ile karşılaşmışızdır. Hatanın isminin zaten başlı başına can sıkıcı olması bir yana bir de üstüne üstlük hata nerede? hani ne oldu? nerede problem? gibi soruların bir çoğunu da oldukça canınız sıkıldıktan sonra cevaplamanız mümkün olabilecektir. Bu iş en çok da C/C++ kullanırken başınıza gelecektir. Çünkü C/C++ da bellek yönetimi tamamen uygulama geliştiricilerin tasarrufuna bırakılmıştır. Yani siz sisteminizin belleğinin bir byte'lık bir gözüne dahi istediğiniz gibi erişebilirsiniz. Bunun bizim için münkün olmasını sağlayan olay pointer(işaretçi) kavramıdır. İşaretçiler ile istediğimiz gibi istediğimiz her yere erişebiliriz. Zaten sorunlara yol açan olaylar da tam olarak burada başlıyor. İstediğimiz yerlere erişiyoruz ama bazen de erişmememiz gereken bir yere erişme imkanı da veriyor bize. Hiç bir kontrol de yapılmıyor derleyici tarafından. Yani 'arkadaşım sen buraya erişmeye çalışıyorsun ama bak burası başkası tarafından kullanılıyor, ya da senin sınırlarının dışında.' gibi bir hata ile bizi uyarmıyor. İşi tamamen bizim bilincimize bırakmış durumda. Çok bilinçli kullanılması gereken bir bellek yönetimine sahip olmak gerekiyor. Bir yandan güzel bir yandan kötü bir özellik. Olayın bir başka yönü ise oluşturduğumuz nesnelerin kullanılmadıkça bir kenarda birikmesi ve bir süre sonra bellek sızıntısı(Memory Leak)'na yol açması. Bu olay C/C++ kullanan bir çok yazılımda, işletim sistemleri dahil, sık görülen birşeydir. Nesneleri oluşturup önerildiği şekilde uygun yollar ile bellek alanlarını boşaltmazsanız sağda solda birikirler ve gereksiz yer kaplayıp işletim sistemini felakete sürükleyebilirler. Bu olay dinamik bellek yönetimi olarak adlandırılmaktadır.

Bu olaya seneler önce ilk olarak java el attı. Dedi ki: 'Ben nesneye yönelik bir yazılım dili olduğuma göre böyle şeyler ile ilgilenmem. İşaretçi kavramı filan benim için yoktur. Benim gözümde herşey nesnedir. Dolayısı ile bellekte nesneler tutulur. Bellek yönetimine gelince o konuda da yazılımcıların işini çok kolaylaştıracak birşey sunuyorum. O da Garbage Collector(Çöp Toplayıcı)...'. Bu fikir seneler sonra C# tarafından da hemen benimsendi tabi ki. Birçok örneği olduğu gibi Microsoft bu güzelliği gözden kaçırmadı ve kendi .NET Framework yapısı içerisine dahil etti.

Garbage Collector(GC)'ın yaptığı iş temel olarak; kullanımı son bulmuş, hiçbir nesne örneği tarafından referans gösterilmeyen, bellek bölgelerini tesipit edip o bölgelerdeki bellek alanını boşaltmaktır. GC sizin yerinize yazılımınızı takip eder ve kullanılmaya bellek bölgelerini sisteme iade eder. Bu Java'da asla bellek sızıntısı olmadığı anlamına gelmez tabi ki ama daha öncelerine göre çok da az oranlara indirgenmiş ve bellek sızıntısı hatalarının tedavisi daha kolay hale gelmiştir. Az önce de söylediğim gibi Java pointer kavramını kabul etmez ve herşeye nesne gözü ile bakar. GC ise bu nesnelerin aktif kullanımın bellek üzerindeki etkisi ile ilgilenir. Program çalıştığı sürece otomatik olarak bu işlemler gerçekleştirilebileceği gibi aşağıdaki biçimde manuel olarak da tetiklenebilmektedir.
1.
Runtime.getRuntime().gc();  
2.
//veya System.gc();

Friday, October 15, 2010

System.out.printf

Iyi gunler arkadaslar bugunku yazimda System.out.printf ne oldugunu ve nasil kullanildigini anlatacam. System.out.printf console yazilacak yazinin istenilen bir kalipta cikmasini sagliyor. yani System.out.print aynisi ama farki su sen benim yazacagim kaliba uygun olarak cik manasini tasiyor. Bir uygulama ile dediklerimi daha iyi anlayacaksiniz

Once bildigimiz bir System.out.print ornegini gosterecem sonra ikisi arasindaki farki anlayacagiz Birinci uygulamami yapacam

public class TestMain {
      public static void main(String args[]){
           System.out.print("Name : Abdulkadir Surname : Selcukoglu City : Mardin");
      }
}

//Console Output
Name : Abdulkadir Surname : Selcukoglu City : Mardin

Somdi ikinci uygulama System.out.printf halina bakalim

public class TestMain {
       public static void main(String args[]){
   System.out.printf("Name : %s Surname : %s City : %s","Abdulkadir","Selcukoglu","Mardin");
       }
}


//Console Output
 Name : Abdulkadir Surname : Selcukoglu City : : Mardin

Dikkat ettiyseniz  "Name : %s Surname : %s City : : %s " bu kisim ile kalibi hazirladim ve kalibin icinde %s ile yazdigim yerlere nelerin geleceginide daha sonraki parametrelerde belirledim "Name : %s" kismindaki %s ikinci yazdigim parametre "Abdulkadir" yazisi " Surname : %s" olana yere "Selcukoglu" ve son olarakta "City : : %s " olan yere "Mardin" yazilir.

Simdi biraz daha guzel bir uygulama ile daha iyi anlamamizi sagliyalim. Ilk uygulama klasik System.out.println ile yapalim.

public class TestMain {
      public static void main(String args[]) {
             String data[][] = {{"Abdulkadir", "Selcukoglu", "Mardin"},
                                          {"Ertugrul", "Aslan", "Gaziantep"},
                                          {"Rasim", "Imanov", "Baku"}};
             for (int i = 0; i < data.length; i++) {
                    String[] d = data[i];
                    System.out.println("Name : " + d[0] + " Surname : " + d[1] + " City : " + d[2] + "");
             }
      }
}

//Console Output
Name : Abdulkadir Surname : Selcukoglu City : Mardin
Name : Ertugrul Surname : Aslan City : Gaziantep
Name : Rasim Surname : Imanov City : Baku


Simdide bu uygulamayi  System.out.printf ile yapalim

 public class TestMain {
      public static void main(String args[]) {
             String data[][] = {{"Abdulkadir", "Selcukoglu", "Mardin"},
                                          {"Ertugrul", "Aslan", "Gaziantep"},
                                          {"Rasim", "Imanov", "Baku"}};
             for (int i = 0; i < data.length; i++) {
                    String[] d = data[i];
                    System.out.printf("Name : %s Surname : %s City : : %s ",d[0],d[1],d[2]);
                    System.out.println();

             }
      }
}

//Console Output
Name : Abdulkadir Surname : Selcukoglu City : : Mardin
Name : Ertugrul Surname : Aslan City : : Gaziantep
Name : Rasim Surname : Imanov City : : Baku