Java Versiyonlarının getirdiği yenilikler..

HashTable ve HashMap Farkı !

Javada kullanılan bir cok veri yıgını vardır. Bunların bazıları SET,LİST arayüzünden bazısı MAP türemiştir. Bugun HashTable ve HashMap Kullanımı ve aralarındaki farkı görücez.

 

HASHMAP

Map arayüzünden türemiştir. Verileri Key,Value şeklinde tutar. Senkronize edilmemiştir ve Thread güvenli değildir. Aynı itemler tekrar tekrar kabul edilmez. Null degeleri kabul eder.

Örnek kullanım icin tıklayınız.

 

HASHTABLE

Map arayüzünden türemiştir. Verileri aynı şekilde Key,Value şeklinde tutar. Senkronize edilmiştir ve Thread güvenlidir. Veriler tekrar kabul edilmez. Null degerleri kabul etmez.

Örnek kullanım icin tıklayınız.

Screenshot_1

 

Set ve List Collection türerken,Mapin kendi arayüzü vardır.

Cross Platform Mobil Uygulama Geliştirme ve Apache Cordova/PhoneGap

Mobil tarafta nasil platformdan bagimsiz uygulamalarin gelistirilebilecegini anlatan guzel bir makale buradan devam edebilirsiniz.

Android Fragment ve Activity Yaşam Döngüsü JPEG

complete_android_fragment_lifecycle

Java Network Programlama

İnternet ortamında cihazların birbiriyle haberleşmeleri için bazı protokoller gereklidir. TCP/IP  modeline göre bilgisayarları birbirlerinden ayırdetmek için IP adreslemesi kullanılır. Bir baska haberleşme protokolü ise UDP’dir.

Genellikle bu kullanılmaz cünkü verinin iletilmesinde geri bildirimi olmadığı icin bazı sıkıntılar cıkabilir. Peki bunları biliyoruz. Biz nasıl haberleşicez ? Bunun icin bilgisayarımızda bulunan 65 bin küsür port kullanarak. Port denince söyle düsünebilirsiniz . Bir kaleniz var ve bu kalenin 65 bin tane kapısı var , bu ne anlama geliyor kaleye 65 bin yerden girebilirsiniz , Bilgisayar kavramındada aynıdır. Bu kapılardan giris ve cıkıslar olucaktır. Bizde bu giris ve cıkıslara göre haberleşmemizi sağlayacagız.

Bazı portlar özel servislere ayrılmıstır. Bunları kullanamayız, kullanmak port cakısmasına sebeb olabilir. Haberleşmenin yapılabilmesi icin SERVER VE CLİENT ihtiyacımız olucak.

Client’ı  socket programlarda hizmet isteyen istemci olarak adlandırabiliriz. İstediği zaman server’a bağlanıp istekte bulunur ve serverdan dönen cevabı alır. Yine istediği zaman bağlantıyı koparabilir.

Server da bu durumda socket programlarda hizmet veren sunucu oluyor. Client istediği zaman sunucuya bağlanabileceği için serverın sürekli açık olup, Clientın bağlanacağı portu dinliyor olması gerekmektedir.

Javada işlerimiz JAVA.NET kütüphanesi tarafından otomatik olarak halledilir. Öncelikle sistemin Server kısmını yazalım.

 

  1. import java.io.DataOutputStream;
  2. import java.io.IOException;
  3. import java.net.ServerSocket;
  4. import java.net.Socket;
  5. public class server {
  6.         public static void main(String[] args) {
  7.                 server r=new server();
  8.                 try {
  9.                         r.server();
  10.                 } catch (IOException e) {
  11.                         // TODO Auto-generated catch block
  12.                         e.printStackTrace();
  13.                 }
  14.         }
  15.         public void server()throws IOException{
  16.                 ServerSocket serverSocket=new ServerSocket(1234);
  17.                 //1234 numarali port acildi.
  18.                 Socket socket=serverSocket.accept();
  19.                 //Client Baglantisi olusturduk .Gelen baglantilari kabul edecek
  20.                 DataOutputStream veri=new DataOutputStream(socket.getOutputStream());
  21.                 //veri yollamak icin dataoutputstream kullaniyoruz//
  22.                 veri.writeUTF(“GIRIS BASARILI”);
  23.                 veri.close();
  24.                 //baglantiyi kapatiyoruz.
  25.         }
  26. }

 

Client Tarafi:

  1. import java.io.DataInputStream;
  2. import java.io.IOException;
  3. import java.net.Socket;
  4. public class client {
  5.         public static void main(String[] args) {
  6. client r=new client();
  7. try {
  8.         r.client();
  9. } catch (IOException e) {
  10.         // TODO Auto-generated catch block
  11.         e.printStackTrace();
  12. }
  13.         }
  14. public void client()throws IOException{
  15.                 Socket socket=new Socket(“localhost”,1234);
  16.                 //Actigimiz porta baglaniyoruz.
  17.         DataInputStream veriAl = new DataInputStream(socket.getInputStream());
  18.         // Mesaj Almak icin kullaniyoruz.
  19.         String mesaj=veriAl.readUTF();
  20.         System.out.println(mesaj);
  21.         }
  22. }

 

Coupling &&Cohesion

Bağlaşım (Coupling): Baglasim birden fazla nesne arasındaki ilişkiyi temsil etmektedir.İyi dizayn edilmiş iki sınıf arasında bağımlılık ne kadar az olursa maliyet bakım daha kolay olur. İki sınıf arasındaki bağlantının az olmasına loosely coupled denir.Loosely coupled icin değişik teknikler uygulanmaktır (interface ,inheritance vs)

Yapışkanlık (Cohesion): Bir önceki Loosely coupled nesneler arasi ilişkilerin ne kadar az olursa bizim acımızdan daha iyi oldugunu söylemiştik. Yapışkanlıkta ise nesneler ici özelliklerin birbiriyle ne kadar bağımlı olursa daha iyi olur. Birden fazla görevi yapan ve birbirinden farklı özellikler bulunuyorsa yapışkanlık özelliğini kaybetmiş oluruz.

JDK 8 İle Gelen Yenilikler

Nashorn JavaScript Engine

Yeni kullanıslı, dizayn, edilmis yüksek performansli,bir JavaScript JDK icine entegre edilmistir. Bu yeni motor javax.script API altinda mevcuttur.

Date & Time API

Yeni takvim ve saat api Java SE icinde.

JDBC 4.2

JDBC kucuk capli gelistirmeler yapilmistir.

Configurable Secure Random-Number Generation

Guvenli rastgele sayi uretimi icin niteligi ve kazanimi getirilmistir.

Stronger Algorithms for Password-Based Encryption

Guclu (PBE) sifreleme algoritmalari getirilmistir.

Base64 Encoding & Decoding

Yeni Base64 encoding and decoding tanimlanmistir.

Java Misson Control

Java yazilimlarinizi kontrol edebileceginiz bir programm.Kullanilan bellek alanlari vs.

Java Dıs Dongu..

Javada degisik bir olayla karsılastım bunu paylasmak istiyorum.

 

public class Main {

/**
* @param args
*/
public static void main(String[] args) {
disDongu:
for(int i=10;i<=30;i+=10){
icDongu:
for(int j=1;j<=3;j+=1){
int k=i+j;
if(k==21){
continue disDongu;
}
System.out.println(k);
}
}

}

}

 

Görüldügü üzere disDongu ve icDongu etiketleri vererek hata almadan sonuca ulastık.21 esit oldugu zaman dısDonguye geciyor ve oradan devam ediyor.

Insan-Bilgisayar Etkilesimi -Norman Modeli

  • En etkili modeldir.
  • Zamanla bu model geliştirilerek başka modeller ortaya konulmuştur.
  • Kullanıcı yapacağına karar verir,
  • Bilgisayar arayüzü ile bunu uygular,
    Uygulama sonucunu gözlemler,
    Sonucu değerlendirerek sonraki adıma karar verir.

NORMAN MODELİ BASAMAKLARI

  1. 1.Hedefi belirlemek
    2.Amacı şekillendirmek
    3.Yapılacak eylemlerin sırasını belirlemek
    4.Eylemleri gerçekleştirmek
    5.Sistemin durumunu kavramak
    6.Sistemin durumunu yorumlamak
    7.Amaç ve hedef doğrultusunda sistem durumunu değerlendirmek.

Kullanıcı ile Sistem Arasındaki Sorun Durumları

Uygulama Uçurumları : Kullanıcının hedefe ulaşmak için planladığı eylemler ile sistemin yapılmasına izin verdiği eylemler arasındaki farktır.
lDeğerlendirme Uçurumları : Kullanıcının beklentisi ile sistemin fiziksel sunumu arasındaki uzaklıktır. Kullanıcı sistemin sunumunu kendi hedefi doğrultusunda kolayca değerlendirebiliyorsa bu uçurum küçüktür.

 

Insan-Bilgisayar Etkilesimi

Human–computer interaction (HCI) insan ile bilgisayar arasındaki calısma,tasarim ve etkilesimi kapsar.İnsanın ve bilgisayarın etkileşimi, arayüzler aracılığı ile gerçekleşir. Insan ıle makıneler arasında dızayn cok önemlidir yanlıs konumanlandırmada hayatı tehlıkelere yol acabılır. Amerikada meydana gelen Three Mile Island accident nükleer kazası bunlara örnek gösterilebilir. Detaylara girmeden önce bazı terimlerden bahsetmekte fayda var.

Goal**Ne
Domain **Nerede
Task** Nasıl
Core Language: Sistemin dili
Task Language: Kullanıcı Dili
Peki Bizim Amacımız NE**Goal
Güvenli,Effektif,Kullanılabilir,Sade,Kolay ögrenilebilir sistemler tasarlamak .