AWS Nedir ?

amazon-web-services

Amazon Web Services yani Amazon’un verdiği Bulut Hizmetlerinin genel adıdır.

Neden AWS Öğrenelim ?

  • Dünyada en hızlı büyüyen bulut bilişim platformudur.
  • Dünyada en geniş alana yayılmış bulut bilişim platformudur.

aws

  • Giderek artan sayıda firma ve organizasyon IT işlerini AWS ortamına taşımaktadır. (2006 ‘da başlayan AWS hizmetleri ilk başlarda küçük bütçeli firmalar veya startup lar tarafından kullanılırken günümüzde binlerce firma Kurumsal uygulamalarında AWS hizmetlerini tercih etmektedir. Örneğin Netflix, Adobe, Nokia, Yelp, Nasa, Samsung, Prifizer, Dow Jones, Nasa vb..)
  • AWS Sertifikasyonu IT alanında çok popüler bir sertifikasyon haline gelmiştir. (Eskiden Microsoft, Cisco veya Redhat certifikasyonları daha popülerdi. Bunlarda uzmanlık gerekirken gelecek 10 yılda bunlardan daha uzakta bulut teknolojileri üzerinde sağlanan soyutlamalar üzerinde geliştirmelerimi yapacağız. PaaS ve Sunucusuz Lambda gibi servisler üzerinde geliştirmeler yapacağız.)
  • IT alanındaki bir çok uzmanın aynı noktada buluşması hem işlerin doğru şekilde yapılmasını hemde güvenli şekilde yapılmasını sağlıyor.

20 Static Variables and Methods

Merhaba Arkadaslar,
Bu yazimda Javada static anahtar kelimesinden bahsedecegim ve metotlar ve degisken icin kullanimi inceleyecegiz.

Oncelikle belirtmem gerekir ki static metot degiskeni bol miktarda tanimlamak object oriented yapisinin temeline dinamit koymaktir

Gerektigi ozel zamanlarda kullanmak gerekir. Dusunelim bize tum objelerden bagimsiz olarak gerekli bir sayac gerekmektedir bu sayaci nasil tutabiliriz. Boyle durumlarda static bir degisken cozum saglayabilir.

static degiskenler ve metotlar sinifa aittirler. Ayri bir instance/ornek/nesne yaratmadan kullanabiliriz. static bir degiskenin tek bir kopyasi bulunur ve tum instance/ornek/nesneler icin bu tek deger paylasilir.

Su basit ornegimizi inceleyelim , static bir int degisken tanimladik ve 0 a atadik , yapilandirici icerisinde degerini 1 arttirdik.

public class CounterEx {

	static int count =0;

	CounterEx() {
		count++;
	}

	public static void main(String[] args) {
		new CounterEx();
		new CounterEx();
		new CounterEx();
		System.out.println("counter value:"+count); //3
	}
}

Continue reading 20 Static Variables and Methods

19 Constructor – 02

Merhaba Arkadaslar,
Bu yazimda Java’ da Constructor/yapilandirici konusuna devam edecegim. ilk yazida temel yapidan bahsetmistim burada biraz daha detaya inecegiz.

Yapilandirici/ Constructor icin kurallar

  • Yapilandiricilar private dahil tum access modifier /erisim belirteclerini kullanabilirler.
class B {
    private B() {}  //private yapilandirici
}
  • Yapilandiricilarin ismiyle sinifin ismi anyi olmak zorundadir.
  • Yapilandiricilarin donus tipi olamaz , void de olamaz.
  • Bir sinifta sinif ismiyle ayni olacak sekilde metot tanimlanabilir. Bu durumda yapilandirici tanimlanmis olmaz.
public class A {
	void A() {
		// metot
	}

	A() {
		//yapilandirici
	}
}

Continue reading 19 Constructor – 02

18 Constructor – 01

Merhaba Arkadaslar,
Bu yazimda Java’da constructor/ yapilandirici kavramindan bahsedecegim.
Javada , yeni bir obje olusturuldugunda constructor/yapilandirici calistirilir/invoke , sinifin kendi yapilandiricisinin yaninda superclass’in yapilandiricisi da calisir detaylar biraz asagida olacak.

Peki yapilandirici ne zaman calisacaktir ? new anahtar kelimesini  kullandigimizda yapilandirici calisacaktir. Bir de serilestirme yapisinda calismaktadir fakat bu konuya bir hayli ilerde gelecegiz. Biz basit temeller ile baslayalim ;

Basit Temeller

  • Abstract/soyut siniflar dahil tum siniflarin yapilandiricisi/constructor olmak zorundadir.
  • Yapilandiri/constructor olmasi zorunlulugu tanimlanmak zorunda oldugu anlamina gemez.
  • Eger bir sinif icin yapilandirici/constructor tanimlamazsak otomatik olarak varsayilan yapilandirici gizli olarak tanimlanir.
  • Varsayilan yapilandirici herhangi bir parametre almaz. Varsayilan yapilandiriciyi biz kendimiz de tanimlayabiliriz.
class A {
   // A(){} A sinifina ait varsayilan yapilandirici

}
  • Eger kendimiz bir yapilandirici tanimlarsak , varsayilan yapilandirici otomatik olarak tanimlanmaz.
public class A {

	int x;
	int y;

	public A(int x, int y) {
		this.x = x;
		this.y = y;
	}

	public static void main(String[] args) {
		A a = new A(10,20);
		//A a2 = new A(); derleme hatasi
	}

}

Continue reading 18 Constructor – 01

17 Return Type

Merhaba Arkadaslar,
Bu Java yazimda metotlarin donus tipi ile ilgili durumlari inceleyecegiz. Daha once bahsi gecen covariant return type ile baslayalim.

Overrided metotlarda donus tipi degismeyecegegini, fakat covariant /esdeger donus tipi olursa degisebilecegini belirtmistik. Ornek uzerinde inceleyelim ;

public class Car {
	Car speedUp() {
		return new Car();
	}
}

class Ford extends Car {

	@Override
	Ford speedUp() {
		return new Ford();
	}
}

Continue reading 17 Return Type

JSF (Java Server Faces) Nedir?

jsf

Java Server Faces bir çatıdır. JSP’den farklı olarak kullanıcı arayüzü sağlanmaktadır. Hazır bileşenler/etiketler ile (tag) yapmak istediğimiz işlemleri basitçe yapabilmekteyiz. Üst seviyede programlar yapmayı kolay hale getirmektedir. İleriki derslerde göreceğimiz JAVA EE teknolojilerine kolayca entegre etmemizde mümkündür. JSF’de farklı kütüphanler ile farklı arayüzler bulabilmekteyiz. Bu kütüphaneleri ekledikçe kodlama tekniğide geliştirene göre değişebilmektedir.

Java Server Facesin geneli olaylara dayanmaktadır. Tıklandığında/yapıldığında gibi eylemlere tepki verebilmektedir. Java Server Pages’e göre en büyük artısı ajax’a kolayca hükmedebilmemiz.  Java Server Faces öğrenmek ileriye dönük bir yatırımdır. Çok katmanlı mimariler için JSF bizim avantajımıza olduğunu düşünmekteyim. Continue reading JSF (Java Server Faces) Nedir?

16 Implementing an Interface

Daha once degindigim gibi Java ‘da interface/arabirim bir kontrattir ve uygulayan siniflar (abstract olmadigi surece) bu kontrata uymak zorundadir yani metotlari uygulamak zorundadir.

interface ile abstract siniflarin en onemli farki sudur ; bir arabirim kalitim hiyerarsi onemli olmaksizin herhangi bir sinifta  uygulanabilir . Ornegin Runnable arabirimini birbiriyle hic alakasi olmayan siniflar ihtiyaci dogrultusunda uygulayip kullanabilir.
Bu arabirimin en onemli ve en guclu noktasidir.

Simdi bir arabirim/interface tanimlayalim ve incelemeye devam edelim ;

Speed.java

interface Speedy {
 void speedUp();
 void beCool();
}

Yukarida linkini verdigim yazida belirtigim gibi , interface/arabirimlerde sadece govdesiz metot yani abstract metot tanimlanabilir ve bu metotlar mutlaka publictir. Ee hani nerede abstract anahtar kelimesi Java bizim icin bunu halleder. Continue reading 16 Implementing an Interface

15 Reference Variable Casting

Merhaba Arkadaslar,
Bu yazimda Reference Variable  Casting / referans degisken donusumu konusundan bahsedecegim.

Daha once de belirttigim gibi , Java ‘da 2 tip degisken vardir

  • primitive / ilkel( char,boolean,byte,short, int,long,double ve float)
  • reference/referans

Bir reference variable/referans degisken bir objeye erismek/access icin kullanilir. Reference Variable belirli bir tipte tanimlanir ve tanimlanan bu tip degistirilemez.
Bir reference variable/referans degisken , tanimlandigi tipteki objeye veya tanimlandigi tipin alttipi/subtype turundeki objelere ulasmak icin kullanilabilir. Fakat ust tipteki bir objeye erismek icin kullanilamazlar. Continue reading 15 Reference Variable Casting

OOP Prensipleri

kpmakaleler.png

1 – Encapsulation (Kapsülleme) : Bir nesnenin değişkenlerini, metodlarını ve değerlerini diğer nesnelerden koruyarak yanlış kullanımlardan koruyan programlama kavramıdır. Nesnelerin içindeki değişken ve metodların korunması işlemi için erişim belirleyiciler(access modifier) ön plana ıkıyor.

public : Her nesneden, tanımlı nesnemizin metod, değişkenlerine erişilebileceğini belirtir.
private : Sadece tanımlı nesne içinde metod, değişkenlere erişilebileceğini belirtir.
protected : Sadece tanımlı nesne içinde ve bu nesneden türetilmiş diğer nesnelerden metod, değişkenlere erişilebileceğini belirtir.

2 – Inheritance(Kalıtım) : Bir üst sınıfın varolan yapısının o sınıftan türetilmiş alt sınıflara aktarılmasına denir. Java yazılım içinde ambiguity(karışıklık) yarattığı için bu bir nesnenin sadece bir kalıtım almasına izin verir. Fakat C++ ve C# bir sınıfın birden çok kalıtım almasına izin verir.

3 – Polymorphism(Çok şekillik) : Bir sınıfın farklı bir sınıf gibi davranabilme ve özelliklerini kullanabilmesidir. Nesne yönelimli programlama dillerinde çok biçimlilik özelliği ise aynı temel sınıfdan türetilmiş olan sınıflarda paylaşılan aynı metodun bu sınıflarda farklı şekillerde uyarlanabilmesidir. Nesnenin davranışı calışma anında belirlendiği için programcılar çok biçimlilik özelliği sayesinde nesnelerin türünü önceden bilmek zorunda kalmazlar.

 

14 Java Tricks – Overloaded vs Overridden

Merhaba Arkadaslar,
Bu yazimda Overloaded ve Overridden kavramlari arasindaki farklardan ve triklerden bahsedecegim. Son 2 yazida Overriden ve Overloaded konusunu incelemistik, henuz incelememiz gereken bir kac detay durum daha var bunlara sirasi gelince deginecegiz.

Arguman tipi 

  • Overloaded metotlarda mutlaka degismek zorundadir.
  • Overridden metotlarda mutlaka ayni olmalidir.

Donus tipi

  • Overloaded metotlarda degisebilir, sorun cikartmaz.
  • Overridden metotlarda , covariant return ( ilerleyen yazilarda deginecegim) haric , degisemez.

Exceptions(Istisnalar)

  • Overloaded metotlarda degisebilir, eklenebilir sorun cikartmaz.
  • Overridden metotlarda checked exception eklenemez fakat cikartilabilir.
  • Unchecked exception eklenebilir/cikartilabilir. (Exception konusuna ilerleyen zamanlarda gelecegiz )

Erisim belirteci 

  • Overloaded metotlarda degisebilir.
  • Overridden metotlarda daha az kisitlamali olacak sekilde degisebilir. public metodu private/protected/varsayilan  erisim belirteci olacak sekilde override edemeyiz.

Continue reading 14 Java Tricks – Overloaded vs Overridden