Apr 28

Java’nın en son geliştirilmiş hali yayınlandı. Java SE 6 update 10 sürümü içerisinde önceki Java sürümlerinde bile bulunmayan özellikler barındırmakta.

Bu sürüm Java 6 versiyonunun 10. update halidir. Bilindiği üzere update’lerde yeni özellik eklenip API değişikliğine gidilmez, daha çok var olan hatalar(bugfix) düzeltilmeye çalışılır. Fakat buna rağmen Java’nın bu 10. update’inde önemli değişiklikler yapılmış.

Java Kernel

Java içerisinde birçok API barındırıyor. Bunlar Swing, AWT, SQL, RMI gibi API’ler. Bu API’lerin işimizi kolaylaştırdığı bir gerçek fakat her bir versiyonda yeni API’lerin de ortaya çıkmasıyla JRE(Java Runtime Environment) boyutu giderek büyüyor. Java geriye dönük bir dil olduğu için 1.1 versiyonunda da olan API’ler 6. versiyonda yer almaktadır.

Yukarıdaki resimden Java boyutunun nasıl hızla büyüdüğünü görebilirsiniz.

Java’nın çekirdeği(kernel) değiştirildi ve böyle bütün JRE indirmek yerine sadece basit bir Java sınıfını çalıştırabilecek JRE indiriyoruz. Eğer JRE kendisinde bulunmayan bir API’ye ihtiyacı olursa internetten kendisi indirmeye çalışıyor.

Yukarıda tüm JRE boyutunun 14.4 MB olduğunu ama ana çekirdeğin boyutunun yaklaşık olarak 3MB olduğunu görebilirsiniz. Daha detaylı bilgiyi buradan bulabilirsiniz.

Java Plug-In
Appletlerin browser içerisinde çalışma şekli değişti. Artık browserdan bağımsız olarak farklı bir süreç olarak çalışacaklar fakat appletler browser içerisinde görüntülenecek.

Performance
Java her geliştirilmesinde biraz daha hız kazanıyor. Bu update ile de performans sorunları çözüldü. Özellikle 3D API’sinde performans oynamaları yapıldı.

Nimbus Look and Feel
Bahsetmek istediğim son değişiklik ise görsel bir değişiklik.
Nimbus Look and Feel görüntüsü Java 6 Swing görseli olarak eklendi.

Fakat halen default olarak Metal Look and Feel geliyor. Bunu Java 6 update 10 kullanıyorsanız bir satır kod ile Nimbus Look and Feel görseline geçirebilirsiniz.

UIManager.setLookAndFeel(”com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel”);

yada komut satırında

-Dswing.defaultlaf=com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel

Java 6 update 10 sürümünü indirebilirsiniz.

SwingSet3 örneğini buradan görebilirsiniz fakat bilgisayarınızda Java 6 kurulu olması gerekmekte.

yazan ekocaman \\ tags: , ,

Apr 23

Aranızda Java Posse‘yi takip edenleriniz vardır. Çeşitli Java Teknolojilerinin tanıldığı ve tartışıldığı bir yer ama bunu sadece yazılı olarak yapmıyorlar. Şu anda 180.sine ulaşan Podcast‘leri yayınlayarak bunu başarıyorlar. Java Posse başlangıcında ilk önce bir şarkı çalmaya başlıyor. Gerçekten dikkat çekici bir müzik.

Bu müzik 1997 yılında Loose Bruce Kerr tarafından yazılmış. Müzikde de o yıllardan kalan Microsoft ile Java arasındaki sürtüşmelerinden bahsediyor.

Download: Java Müzik  Java Müzik (536.7 KiB, 286 hits)


Java Music

Java, Java, Java Java jing-jing-jing
Java, Java, Java Java jing-jing-jing

It’s not a cup of coffee but it’s hot as can be
Came pourin’ through the Gates on a “Big Mac” Nealy
Singin’, Java, Java, Java Java jing-jing-jing

Microsoft thought Java really could be a threat
Java through the Windows maybe put them in debt
Gates, he took a license but he altered the feel
Java members all said, “Bill, you’re outa the deal!”

Singin’, Java, Java, Java Java jing-jing-jing
Java, Java, Java Java jing-jing-jing

It’s like a cup of coffee ’cause it’s tasty and fresh
But it’s not really Java if the flavors don’t mesh
Pure Java, Java, Java Java jing-jing-jing

Microsoft released a browser, Java was there
The Sun, it rose and lit up what was really a dare
The RMI, the JNI were missing and lost
Scott said, “Bill, you broke your promise, Now pay the cost!”

Bill said, “Hey, my recipe is richer than yours”
Scott said, “I own the coffee shop, sit down and I’ll pour”

Pour Java, Java, Java Java jing-jing-jing
Java, Java, Java Java jing-jing-jing
Nobody can tell yet what the future may bring
All we know is Java goes jing-jing-jing

It goes Java, Java, Java Java jing-jing-jing
(Scott really means it)
Java, Java, Java Java jing-jing-jing
(Bill you better believe it)
Java, Java Java jing-jing-jing

yazan ekocaman \\ tags: ,

Apr 22

Javax.servlet paketi içerisinde bulunan RequestDispatcher kullanarak bir sayfayı başka bir sayfaya yönlendirebiliriz. Bu yazacağımız örnekte iş ve görüntü kısmını servlet ve jsp kullanarak nasıl ayrı şekil yapabileceğimizi göreceğiz.

Servlet içerisinde iş tarafı yapılacak, bunlar database işlemleri veya business logic olabilir. Jsp tarafında ise sadece servlet tarafından gönderilen obje sayesinde görüntüleme işlemi yapılacak.\r\nRequestDispatcher sınıfının forward methodunu kullanacağız.

void forward(ServletRequest request, ServletResponse response);

Servlet kodumuz

public class MyServlet extends HttpServlet {
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  }
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String a = request.getParameter("a");
    String b = request.getParameter("b");
    int firstNumber = Integer.parseInt(a);
    int secondNumber = Integer.parseInt(b);
    request.setAttribute("sonuc", firstNumber*secondNumber);
    RequestDispatcher dispatcher ;
    dispatcher = getServletContext().getRequestDispatcher("sonuc.jsp");
    dispatcher.forward(request, response);
  }
}

Bu servletimizde bize parametre olarak gönderilen iki değişken çarpılarak sonuc.jsp sayfasına yönlendiriliyor. Burada önemli olan iki sayının çarpımının request objesinin setAttribute methodunu kullanarak diğer sayfaya iletmemiz.

Jsp kodumuz

<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<%
     int sonuc= (Integer)request.getAttribute("sonuc");
%>
Sonuç = <%=sonuc%>

Böylece Servlet tarafında yaptığımız işlemi Jsp tarafında kullanıcıya göstermiş olduk.

yazan ekocaman \\ tags:

Apr 22

Java ile var olan bir dosyayı silmek istediğinizde

boolean success = (new File(”dosyaismi”)).delete();
if (!success)
// Dosya silindi
}else {
// Dosya silinemedi
}

yazan ekocaman \\ tags: ,

Apr 22

Bir dosyayı bir yerden başka bir yere koplayamak istediğimizde

InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dst);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
  out.write(buf, 0, len);
}
in.close();
out.close();

yazan ekocaman \\ tags: ,

Apr 15

Javacı.net yeniden yayında. En kısa zamanda eski dataları da burada göreceksiniz.

yazan ekocaman

Nov 16

Elinizde bir DOM obje var. Bunu herhangi bi XML dosyasında okuyup birazda değişiklik yapıp yeni bir XML dosyası oluşturmak istiyorsunuz. Peki bu DOM objesini XML dosyasına nasıl yazabiliriz. Aşağıdaki kod ile bunu kolayca yapabiliriz.

Node node = ... // elimizde dosyadan okuduğumuz root node
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(node);
File file = new File("yeni.xml");
StreamResult result = new StreamResult(file);
transformer.transform(source, result);

yazan ekocaman \\ tags: ,

Nov 15

redhat_developer.JPGEclipse tabanlı Exadel Studio’yu alarak geliştirme yapan Redhat Redhat Developer Studio isim geliştirme ortamının RC1 versiyonunu çıkardı. Web uygulamalarını geliştirmek için birçok özellik barındırıyor. Mesela JSF kodlarken aynı anda görsel halini de başka bir pencerede görebiliyorsunuz. JSF componentları için sürükle-bırak ile geliştirme yapmanıza imkan sağlıyor.

rh1.JPG

http://www.redhat.com adresinden linux ve window versiyonlarını indirebilirsiniz.

yazan ekocaman \\ tags: ,

Nov 08

Java’da dosya üzerinde bir işlem yaparken dosyayı kilitlemek istiyorsanız aşağıdaki kodu kullanabilirsiniz.
Kodu çalıştırdığınız zaman java.io.IOException atacaktır. Java kilitli dosyayı okumaya izin vermeyecektir.

import java.io.*;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;

public class FileLockSample {

    public static void main(String[] args) throws Exception {
        RandomAccessFile file = null;
        FileLock fileLock = null;
        try {
            // dosyayı RW icin acıyoruz
            file = new RandomAccessFile("C:/a.txt", "rw");
            FileChannel fileChannel = file.getChannel();

            // Dosya kilitleniyor
            fileLock = fileChannel.tryLock();
            if (fileLock != null){
                System.out.println("Dosya kitli");
                // Dosya okunmaya çalışılıyor
                // fakat kilitli olduğu için
                // Exception atıyor
                FileInputStream input=null;
                input = new FileInputStream("C:/a.txt");
                int data = input.read();
                System.out.println(data);
            }
        } catch (Exception exception){
            exception.printStackTrace();
        } finally {
            if (fileLock != null){
                // Dosya kiliti kaldırılıyor
                fileLock.release();
            }
        }
    }
}

yazan ekocaman \\ tags: ,

Nov 02

IntelliJ’nin son versiyonu olan 7.0.1 artık çıktı. Bu sürümünde dikkat çeken özelliklerden birisi performansın arttırılması. Ayrıca Netbeans ve Eclipse projelerini kolayca IntelliJ projelerine import edebiliyorsunuz. Daha detaylı bilgileri buradan bulabilirsiniz.

30 günlük deneme sürümünü kullanmak için
http://www.jetbrains.com/idea/download linkini kullanabilirsiniz.

yazan ekocaman \\ tags: