Java API

Java ile Mail Gönderme – JavaMail API

Java uygulamaları içerisinden mail gönderme, JavaMail API sayesinde platform bağımsız ve protokol bağımsız olarak gerçekleştirilebiliyor.

Bu yazı da, Java ile mail göndermek için geliştirdiğim basit bir uygulamayı paylaşmak istiyorum. Uygulama, birden fazla mail adresine mail yollayabildiği gibi, istediğiniz kadar ek dosyayıda (attachments) maillarınız içerisinde gönderebilmenizi sağlıyor.

Uygulama tamamen JavaMail API ile geliştirildiğinden dolayı, gerekli olan kütüphaneleri geliştirme ortamınıza eklemeniz gerekiyor. javax.mail paketi altında gerekli olan tüm sınıflar toparlanmıştır. Bu kütüphane eğer geliştirme ortamınızda mevcut değil ise, buradan ulaşabilir, gerekli Jar dosyalarını bilgisayarınıza indirebilirsiniz.

(daha fazla…)

Java Tarih Formatlama – TimeStamp String Dönüşümleri

Bazen kullanıcıdan alınan formatlanmış ve string tipindeki (örn : 04.06.2010) tarihleri, özellikle veritabanı işlemlerinde, Unix Epoch (Unix TimeStamp) türüne çevirmek isteyebiliriz.

Ya da Unix TimeStamp türündeki sayısal değeri, insanların anlayabileceği bir forma dönüştürmek isteyebiliriz. Bu yazıda bu iki işlemin Java da nasıl yapılabileceğini anlatmaya çalışıcam.

Öncelikle Unix Epoch ( Unix TimeStamp) kavramının ne olduğuna bakmak gerekiyor.

(daha fazla…)

Swing JFileChooser ile Dosya Bilgilerini Almak

Daha önce şurada açıklamaya çalıştığım File sınıfı ile, işletim sistemi üzerindeki herhangi bir dosya ya da klasör ile alakalı pekçok bilgiye erişebiliyoruz.

Bu yazıda, File sınıfının bu özelliklerini kullanarak, Swing bileşenleri ile grafiksel bir uygulama geliştirmeye çalışacağım.

Geliştireceğimiz uygulama ana hatları ile oldukça basit aslında. Swing’in sunmuş olduğu JFileChooser ile, işletim sisteminde istediğimiz bir dosyayı seçip o dosya (file) hakkında pekçok bilgiyi, JList bileşeni yardımı ile programımızda görüntüleyeceğiz.

Uygulamayı geliştirmeye geçmeden önce, bu örnek kod hakkında söylemek istediğim birkaç şey var. Uygulama her ne kadar, JFileChooser ile seçtiğimiz bir dosyayı File türünde bir değişkene atıyorsa da, uygulama da kullanılan JButton (buton/düğmeler) bileşenleri ile, Swing üzerinde olay (event) yönetiminin nasıl çalıştığı hakkında da başlangıç seviyesinde bilgi sahibi olunabilir.

(daha fazla…)

Java Scanner ve Formatter Sınıfları ile Dosya İşlemleri

Java I/O kütüphaneleri birçok farklı veri kaynağı ile işlem yapabilmek için geliştirilmiş bir yapıya sahiptir.

Veri kaynağı, işletim sisteminde bulunan bir dosya (file) olabileceği gibi, ağ üzerinde bulunan uzak bir bilgisayar da olabilir. Java geliştiricileri için bu tür input (girdi) output (çıktı) işlemlerinin detayı esasen çok da önemli değildir. Herhangi bir veri kaynağını, Java’nın sunmuş olduğu I/O sınıfları ile ele alabilirsiniz.

Bu yazıda, Java I/O kütüphanelerini kulanarak işletim sistemi üzerinde bulunan dosyalar ile nasıl veri giriş çıkışı yapılacağını anlatmaya çalışacağım. Bunun için kullanacağımız sınıflar java.util paketi içerisinde bulunan Scanner ve Formatter sınıfları.

(daha fazla…)

Java ile Twitter Bağlantısı

Java uygulamalarınız içerisinde, Twitter ile etkileşime geçmek için JTwitter adında güzel bir API geliştirilmiş. JTwitter open source (açık kaynak) bir kütüphane ve LGPL license altında yayınlanmış.

JTwitter sayesinde, birkaç satır kod ile Java uygulamalarınız içerisinden Twitter hesabınıza ulaşabiliyor, “status” iletilerini alıp gönderebiliyor, arkadaş ağınızı yönetebiliyor, arkadaşlarınıza mesaj gönderebiliyorsunuz. Tabi sadece bu işlevleri gerçekleştirmek için tasarlanan bir kütüphane değil JTwitter. Twitter’ın sunduğu API ler aracılığı ile her türlü işlemi basitçe gerçekleştirmek mümkün. Bu da twitter.com üzerinde yapabildiğiniz hemen hemen herşeyi JTwitter ile de yapmak anlamına geliyor.

Aşağıdaki kod bloğu ile Twitter hesabına bağlanan, Twitter durumunuzu (status) güncelleyen ve “follower” listenizi çekip ekrana bastıran bir Java uygulaması geliştirebilirsiniz.

(daha fazla…)

Javada Stringler

String, bazı kitaplar “katar” olarak da Türkçe’ye çeviriyor, bir dizi karakterin birleşimidir.

Herhangi bir programlama dilinde stringler, kullanıcıdan veri almadan tutun yazılımın çıktı (output) olarak verdiği veriye kadar pekçok işlemde sıkça kullanılır. Bu yüzden stringler, yazılım geliştiricilerin iyi bilmesi ve dilin sağladığı özelliklerinin iyi kavranmış olması gerekir.

String kavramı programlamada oldukça önemli ve sık kullanılan bir yapı olduğu için Java, geliştiricilerin string ve bunlar üzerindeki işlemleri hızlı ve basit bir şekilde yapabilmesi için çok gelişmiş string kütüphaneleri sunar. C/C++ (özellikle C) gibi dillerde varolan string (C de string yapısı yoktur) yapılarından çok daha farklı ve gelişmiş bir string mekanizması sunan Java, stringleri birer nesne olarak ele alır. Bu sayede, nesne yönelimli programlamanın getirdiği pekçok nimeti, böylesi sık kullanılan bir yapıya kazandırmış olur.

(daha fazla…)

Java Object Serialization

Java tamamen nesne yönelimli bir programlama dili olduğu için, Java üzerinde uygulama geliştirirken nesneleri sıkça kullanıyoruz. Java platformunda bilindiği gibi, int, double, byte gibi primitive tipler dışındaki herşey nesnedir.

Ancak Java’da kullanılan nesneler, Java platformunda (JVM) hayat bulurlar. Platform dışında nesnelerin, hiçbir anlamı yoktur. Nesne yönelimli programlama paradigmasını destekleyen Java’da, tasarlanan nesnelerin tekrar kullanılabilmesi (reuse) önemli bir konu olduğuna göre, bu nesneleri Java platformu dışında da hayata geçirmek gerçekten önemlidir. Bahsedilen bu problem, Java Serialization API sayesinde çok kolay bir şekilde aşılabiliyor.

Konuya bir de şu yönden bakarsak, herhangi bir nesne içerisindeki fieldları bir dosyaya yazdırdığımızda, bu verilerin sadece değerlerini (values) dosya içerisinde depolarız. Halbuki bu verilerin sınıf tanımlaması içerisindeki tipleri de en az değerleri kadar önemlidir. Herhangi bir nesnenin fieldındaki değer 3 ise, bu değerin string mi int mi olduğunun dosya üzerinde bir anlamı yoktur.

Java Serialization API sayesinde bir nesnenin birebir kopyasını, Java platformu dışında da depolayabiliriz. Bu mekanizma ile daha sonra,  nesneyi depolanan yerden çekip, aynı durum (state) ve özellikleri ile kullanmaya devam edebiliriz. Tüm bu sisteme, Object Serialization (Nesne Serileştirme) adı verilir.

(daha fazla…)

Java I/O File Sınıfı

Java, işletim sistemindeki dosya (file) ve klasörler (directories) hakkında her türlü bilgiyi alabileceğimiz çok kullanışlı bir sınıf tanımlar.

java.io paketi içerisinde bulunan File sınıfı sayesinde sistem üzerindeki dosya ve klasörler ile ilgili her türlü bilgiyi çekebiliyoruz. Ancak File sınıfı hakkında bilinmesi gereken en önemli nokta, File sınıfı herhangi bir dosyayı açmak ya da kapatmak gibi işlemler için tasarlanmamıştır. Dosya sistemi üzerinde bir dosya veya klasör ile ilişkilendirilerek, o nesne hakkında her türlü bilgiyi döndürür.

File sınıfı ile dosya ve klasörler için gereken işlemleri yapabilmemiz için, öncelikle Path (konum-yol) hakkında birkaç şey söylemek gerekiyor.

(daha fazla…)

Java Swing Temelleri

Swing, Java Foundation Classes içerisinde bulunan ve Java uygulamalarına grafiksel arayüz (GUI) kazandırmak için Sun tarafından geliştirilmiş devasa büyüklükte bir kütüphanedir. Swing kullanılarak geliştirdiğimiz Java uygulamalarına, her türlü ihtiyaç için tasarlanmış bileşenleri doğrudan kullanarak grafiksel arayüz (GUI) kazandırabiliyoruz.

Java’nın grafiksel arayüz ihtiyaçlarını karşılayan ilk bileşen seti AWT (Abstract Window Toolkit), bazı yetersizliklerinden dolayı kullanımı terkedilmiş ve Swing geliştirilmiştir.Aslında Swing, baştan tasarlanan bir kütüphane de değildir, tamamen AWT bileşen seti üzerinde geliştirilerek, AWT nin pekçok bileşenini ve kütüphanelerini de kullanır. Mesela GUI programlarının en büyük özelliği olan olaylar, tamamen AWT nin olay yönetme mekanizmasını kullanır.

(daha fazla…)

Java I/O Temelleri

Bilgisayar programları basitçe şu şekilde çalışır. Programa bir input (girdi) verirsiniz, program o inputu, içeriğinde tanımlanan algoritmalar doğrultusunda işler ve size bir output (çıktı) verir. Yazılımlardaki asıl amaç budur.

Java platformu, bu temel üzerinde çok gelişmiş bir Input/Output (I/O) sistemi geliştirmiştir. Java ile geliştirdiğiniz yazılımlar, Java platformunun sunduğu devasa büyüklükte ve gelişmişlikte tasarlanan I/O kütüphaneleri ile her türlü girdi-çıktı işlemleri çok basit bir şekilde halledilebiliyor.

Temel I/O ile alakalı tüm sınıflar Java platformunda,  java.io paketinde toplanmıştır. Bu paket içerisinde, temel input-output kaynaklarındaki her türlü işlemleri halleden birçok sınıf tanımlanmıştır ve Java geliştiricilerinin kullanımına sunulmuştur.

Java platformunun geliştirilmesi ile java.io paketinin yerini java.nio paketi almaktadır. NIO2 adı verilen bu yeni I/O mekanizması JDK 7  ile paralel olarak geliştirilmektedir.

(daha fazla…)