Java programlama dili yapısı
itibarı bakımıyla diğer programlama dillerine nazaran daha güvenlidir.Java’nın güvenli olmasını sağlayan en büyük etken
kendinden önce geliştirilen dillerin zaafları göz önünde bulundurarak bu
zaafları hesaplayıp ve bu doğrultuda geliştirilmiş olmasıdır. Bir önce ki
makalemiz olan “C Programla dili ile Ram Bellekte Kısa Bir Seyahat” adlı
makalemizde diziden taşan bir döngüden bahsetmiştik ve hatta aynı örneği Java
da denediğimizde bize aşağıda ki hatayı vermişti.
”Exception in thread "main" java.lang.NullPointerException
at
tr.Run.main(Run.java:11)”
Java C ve C++’ın
yıkıcı özelliklerini kapatmış, güçlü ve yapıcı özelliklerini alarak
geliştirilmiştir. Bu yüzden Java yapısı itibari ile de güvenli bir programlama
dili olarak kendini göstermektedir. Bunun dışında Java da çeşitli şifreleme
yöntemleri ve değişkenleri saklama gibi bazı güvenlikle ilgili metotlar kullanılmaktadır.
Bunlardan en bilenini ise kapsüllemedir.
Kapsülleme Nedir?
Kapsülleme
Java da belirlenen private(class’a özel) değişkenleri bazı metotlar arıcılığı
ile direkt çağırılarak kullanmasını engelleyen bir metottur. Yani dolaylı
olarak değişkenlere erişim sağlamaktadır. Bu metodun ana kullanılma sebebi ise class’ların
içerisinde kullanılan değişkenlerin diğer class’ların direkt erişimine izin
vermeyip olası bir güvenlik sorununa yol açmasını engellemektir. Bilindiği gibi
private türünde ki değişkenler sadece bulunduğu class içerisinde
kullanılabilir. Olası güvenlik zaaflarından kastımız; Deşifre edilen
değişkenlerin ram bellekte bir adresi tutulur, adresi tespit edilen değişkene
de her türlü müdahale söz konusu olabilir.
Bir çizimle anlatacak olursak kapsüllemeyi durum aşağıda ki örnekten
ibarettir.
Resim1
Durumu
açıklayacak olursak;
Başbakanın bir değişken olduğunu düşünelim, devletin önemli
sırlarına vakıf ama aynı zaman da halkla da iletişimde olması gerek, Halkla
direkt iletişim kurmaya çalışırsa başbakan, halkın içerisine sızmış kötü
niyetli kişilerle de karşı karşıya gelmesi mümkün olabilir. Bu durum da
milletin bekası için kurulmuş devletin, sırlarının gün yüzüne çıkma ihtimalini
ortaya koyar. Yani milletimizin zor durumlarda kalmasına neden olabilir. Bu
yüzden hem devletin sırlarını korumak hem de başbakanın halkla iletişimi
sağlamak için başbakanlık kendine özgü bir kapsülleme metodu geliştirmiştir. İletişimin
başladığı ilk nokta olan E-mail halktan atılan mesajdır, bu mesaj ilk olarak Şikâyet
sorumlularına gelir süzgeçlerle süzer ve bir üst kat olan danışman yardımcısına
iletilir, bu olayı Java da JFormattedTextField olarak düşünebiliriz JFormattedTextField
sadece sayıları aldırmamızı sağlar, bir nevi yukarıda bahsettiğimiz Şikâyet
sorumlularının görevini üstlenir ve bir süzgece tabi tutar, Sonra ise Şikâyet
Sorumluları durumu bir üst katman olan Danışmana yardımcısına iletir. Oradan
ise Danışmana Danışmadan Korumaya, Korumadan ise Başbakana gönderilir. Başbakan
ise kendine gelen bilgileri alt kollara ayrılan devletin kademelerine gönderir.
Java da durum bu kadar dolaylı ve güvenli olmasa da bu duruma benzer bir
uygulama ile uygulanmaktadır. Derslerimizi takip eden arkadaşlar telefon
rehberi projesini muhakkak incelemiştir. Dikkat ederseniz arayüz ile veritabanı
arasında sürekli Domain class’ını kullandık veritabanından alınan bilgiler
domain aracılığı ile arayüze gönderilir, aynı işlem yine tekrar edilip bu sefer
arayüzden alınan bilgiler veritabanına gönderilir, kapsülleme sadece veritabanı
için kullanılmaz. Kapsülleme güvenlik gerektiren her alanda kullanılabilir.
Şimdi Kapsüllemenin kullanımını anlatan öğrencilere yönelik bir
örnek paylaşacağım;
package
tr.org.eclipseturkiye.domain;
public class
OgrenciDomain {
private int ogrno;
private String ogradi;
private String ogrsoyadi;
public int getOgrno() {
return ogrno;
}
public void setOgrno(int ogrno) {
this.ogrno =
ogrno;
}
public String getOgradi() {
return ogradi;
}
public void setOgradi(String ogradi) {
this.ogradi =
ogradi;
}
public String getOgrsoyadi() {
return ogrsoyadi;
}
public void setOgrsoyadi(String ogrsoyadi) {
this.ogrsoyadi =
ogrsoyadi;
}
}
Kısaca Kapsülleme bu
şekilde çağırılmaya hazır hale getirilir.
Şimdi ise Kapsüllemenin arayüz de çağırılmasını anlatacağım;
OgrenciDomain ogrenciDomain = new OgrenciDomain();
ogrenciDomain.setOgrno(Integer.parseInt(ogrenciNoField.getText()));
ogrenciDomain.setOgradi(ögrenciadıField.getText());
ogrenciDomain.setOgrsoyadi(ogrenciSoyadField.getText());
Dikkat ederseniz arkadaşlar arayüzden veritabanına
kayıt yaptırılmak isteniyor ve hiçbir şekilde OgrenciDomain class’ın da ki değişkenler kullanılmıyor ve OgrenciDomain class’ından başka hiç
yerde de o değişkenler direkt çağırılamıyor. Kısaca Kapsüllemenin kullanılma
amacı budur. Bugün ki dersimiz bu kadar bir sonra ki dersimizde görüşmek
dileğiyle.
Not: BU MAKALE EMRAH DEDEOĞLU TARAFINDAN
YAZILMIŞTIR İÇERİSİNDE KULLANILAN ÖRNEKLER DENENMİŞTİR VE OLUMLU SONUÇLAR
ALINMIŞTIR
teşekür emeğinize
YanıtlaSil