Java Güvenlik Açığı Hakkında

JDK7 u6 güncellemesinden sonra oluşan güvenlik açığı giderildi. Özellikle bazı haber sitelerinde yazıldığı gibi “internette sörf yaparken Java’yı kapatın!” uyarılarına uyarak tarayıcınızda Java’yı devre dışı bırakmanıza gerek yok.

Tek yapmanız gereken Java’yı son sürümüne yükseltmek o kadar.

Günümüzde 3 milyardan fazla cihazda kullanılan Java, bilgisayarların da yüzde 97’sinde bulunuyor.

Java’yı son sürümüne yükseltmek için işletim sistemlerinizin güncellemelerini kullanabilir ya da bu adresten indirebilirsiniz.

[box type=”download”] Java 6 kullanıcıları için JDK6 u35 çıktı. Buradan indirebilirsiniz.[/box]

 

Eclipse’e Swing eklentisi kurma ve örnek Swing uygulaması

JFC yani Java Foundation Classes, Java uygulamalarına görsellik katabilmemizi sağlayan grafiksel kullanıcı arayüzleri (Graphical User Interfaces – GUIs) ve zengin grafik fonksiyonaliteler sağlayan özellikler bütünüdür. JFC dendiğinde birden fazla özellikten bahsedebiliriz.

Örneğin ;

  • Swing GUI Bileşenleri : Sayfalarımızda kullandığımız tablolardan düğmelere ya da giriş kutucuklarından menülere kadar tüm bileşenlerdir.
  • Look And Feel Desteği : Java’da yazmış olduğunuz herhangi bir masaüstü uygulamasının görünümünü isterseniz Java isterseniz Windows ya da herhangi başka bir görünüme kavuşturabilirsiniz. Örnek koda Swing’te Pencere Görünümü adlı  makalemden ulaşabilirsiniz.
  • Accessibility API : Bu API ile kullanıcıdan bilgi almak için ekran okuyucuları gibi yardımcı teknolojiler kullanılır.
  • Java 2D API : Yazılımcıların uygulamalarında 2D metinleri, resimleri, grafikleri kullanabilmelerini sağlar.
  • i18n (Internationalization) : Yazılan uygulamaların başka dillere destek vermesi sağlanır.

Yukarıda bahsettiğimiz tüm bu özellikler JFC olarak anılır.

Şimdi Swing kullanarak ilk uygulamamızı geliştirelim. Swing ile kod geliştirmek için en ideal IDE NetBeans olsa da ben Eclipse kullanacağım.

[box type=”info”] NetBeans’te Swing için ekstra plugin indirilmesine gerek yoktur.[/box]

Eclipse’te Swing uygulamaları geliştirmek için tasarlanmış birden fazla plugin var. Ben Google’ın Window Builder eklentisini kullanacağım.

Bu eklentiyi Eclipse’inize eklemek için önce Help menüsünden Install New Software… menüsünü seçiyoruz.

Daha sonra sağ üst kısımdaki Add butonuna tıklayarak Location kısmına http://dl.google.com/eclipse/inst/d2wbpro/latest/3.7 adresini giriyoruz. Bir isim vererek eklentiyi kuruyoruz.

Eklenti kurulduktan sonra IDE’nizi yeniden başlatmalısınız. Zaten Eclipse bunu indirme işlemini bitirdikten sonra size söylüyor.

Yeni bir uygulama yaratıyorum.

Daha sonra src dizininde yeni bir sınıf yaratıyorum. Fakat yaratacağım sınıf JFrame sınıfından türeyecek ve görsel olarak sayfa tasarlayabileceğim. Bunun için New menüsünden yeni bir JFrame yaratıyorum.

Paketin ismine com.javauzmani.view sınıfın ismine ise Merhaba diyorum. Daha sonra da Design kısmına geçiyorum.

Bu aşamadan sonra önce Layout Manager seçiyorum.

[box type=”info”] Layout Manager’larla ilgili yazımı inceleyebilirsiniz.[/box]

Daha sonra da pencereme bir tane düğme yerleştiriyorum.

Butonun üzerine çift tıklayarak ya da sağ klik Add Event Handler ->action -> actionPerformed seçeneklerini takip ederek butona tıklandığında yapılacak iş için yazacağım kod kısmına geçiyorum.

Butona tıkladığımda bir bilgilendirme mesajı verdiren kodu aşağıdaki şekilde yazıyorum.

[codesyntax lang=”java” lines=”no”]

package com.javauzmani.view;

import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

public class Merhaba extends JFrame {

	private static final long serialVersionUID = -4962656916544575558L;
	private JPanel contentPane;

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Merhaba frame = new Merhaba();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	public Merhaba() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		GridBagLayout gbl_contentPane = new GridBagLayout();
		gbl_contentPane.columnWidths = new int[] { 0, 0, 0 };
		gbl_contentPane.rowHeights = new int[] { 0, 0, 0 };
		gbl_contentPane.columnWeights = new double[] { 0.0, 0.0,
				Double.MIN_VALUE };
		gbl_contentPane.rowWeights = new double[] { 0.0, 0.0, Double.MIN_VALUE };
		contentPane.setLayout(gbl_contentPane);

		JButton btnMerhabaDnya = new JButton("Merhaba Du00FCnya");
		btnMerhabaDnya.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				butonaTiklandi();
			}
		});
		GridBagConstraints gbc_btnMerhabaDnya = new GridBagConstraints();
		gbc_btnMerhabaDnya.gridx = 1;
		gbc_btnMerhabaDnya.gridy = 1;
		contentPane.add(btnMerhabaDnya, gbc_btnMerhabaDnya);
	}

	private void butonaTiklandi() {
		JOptionPane.showMessageDialog(this, "Merhaba Dünya", "BİLGİ",
				JOptionPane.INFORMATION_MESSAGE);
	}
}

[/codesyntax]

Uygulamayı çalıştırıp butona tıkladığımda görüntü aşağıdaki gibi oluyor.