24 Ağustos 2017 Perşembe

Manifest Dosyası

Giriş
Dosyanın tam ismi Manifest.mf. jar dosyasındaki yolu META-INF/MANIFEST.MF şeklindedir.

Main-Class
Eğer bu satır yoksa executable jar'ı çalıştırmayı denersek şu hatayı alırız.
no main manifest attribute, in Foo.jar
Örnek
Şöyle yaparız.
Manifest-Version: 9.9
Ant-Version: Apache Ant 1.9.6
Class-Path: app.jar
Created-By: 1.7.0_80-b15 (Oracle Corporation)
Main-Class: test.App

Name: test/App.class
D: MCwCFCc9lvmNijUSfZwkwYoySDWuoRjhAhQ9yKS8YH7hKVZ54dTihEwk3Q27sw==

TimeZone Sınıfı

Giriş
Bu sınıf Java 1.1'den beri mevcut.

Calendar kurmak için şöyle yaparız.
TimeZone tz = TimeZone.getDefault();  
Calendar cal = GregorianCalendar.getInstance (tz);
constructor
Şöyle yaparız.
Calendar calendar = ...;  
TimeZone tz = calendar.getTimeZone();  
getDefault metodu
Şöyle yaparız.
TimeZone tz = TimeZone.getDefault();
getDisplayName metodu
Şöyle yaparız.
String time_zone = TimeZone.getDefault().getDisplayName(false, TimeZone.SHORT);
Çıktı olarak şunu alırız.
GMT-05:00
getID metodu
Şöyle yaparız.
String time_zone = TimeZone.getDefault().getID();
Çıktı olarak şunu alırız.
america/new_york
getOffset metodu
Belirtilen tarihteki offset'i milisaniye olarak bulmak istersek şöyle yaparız.
Date d = ...;
int offsetInMillis = tz.getOffset (d);
getRawOffset metodu
Şöyle yaparız.
int offsetInMillis = tz.getRawOffset (); 
Milisaniyeyi saate çevirmek istersek şöyle yaparız.
int hours = TimeUnit.HOURS.convert (offsetInMillis, TimeUnit.MILLISECONDS);
getTimeZone metodu
İsmi belirtilen saati dilimi nesnesini döndürür. Şöyle yaparız.
TimeZone tz =  TimeZone.getTimeZone ("UTC")
Şöyle yaparız.
TimeZone tz = TimeZone.getTimeZone("GMT");
inDaylightTime metodu
Belirtilen tarihin yaz saatine denk gelip gelmediğini döner. Şöyle yaparız.
boolean isDST = TimeZone.getDefault().inDaylightTime(new java.util.Date());
setDefault metodu
JVM'nin saat dilimini değiştirir.
TimeZone.setDefault (TimeZone.getTimeZone("UTC"));


23 Ağustos 2017 Çarşamba

MethodHandles Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.lang.reflect.Method;
import java.lang.invoke.*;
lookup metodu
Bir MethodHandle nesnesi döndürür. Elimizde Foo ata sınıfı olsun.
public class Foo {
  public void doit() {
    System.out.println("good");
  }
}
Bu sınıftan kalıtan Bar sınıfı olsun
public class Bar extends Foo {
  public void doit() {
    System.out.println("bad");
  }
}
Foo sınıfının doIt () metoduna erişmek için şöyle yaparız.
Bar b = new Bar();
Method m = Foo.class.getDeclaredMethod("doit", new Class[]{});
MethodHandle h = MethodHandles.lookup().unreflectSpecial(m, Bar.class);
h.invoke(b);


InetAddress Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.net.InetAddress;
Bu sınıf IPv4 veya IPv6 adresini temsil eder. C# dilindeki karşılığı IPAddress sınıfıdır.

getAddress metodu
Şöyle yaparız. Byte dizisi 192,168,1,20 gibi değerler içerir.
byte[] octets = inetAddress().getAddress();
Bir ağdaki tüm IP'leri dolaşmak için şöyle yaparız.
byte[] ip = InetAddress.getLocalHost().getAddress(); 

for (int i = 0; i < 255; i++) 
{ 
  ip[3] = (byte)i; 
  InetAddress address = InetAddress.getByAddress(ip); 
  if (address.isReachable(1000)) 
  { 
    System.out.println(address.getHostAddress()+"can be pinged with Name"+
                       InetAddress.getByAddress(ip).getHostName() );
  } 
}
getByAddress metodu - constructor method
Şöyle yaparız.
int broadcast = ...;
byte[] quads = new byte[4];
for (int k = 0; k < 4; k++)
  quads[k] = (byte) ((broadcast >> k * 8) & 0xFF);
InetAddress inetAddress = InetAddress.getByAddress(quads);
getByName metodu - constructor method
IP ile çalışabilir. Şöyle yaparız.
InetAddress inetAddress = InetAddress.getByName("192.168.1.5");
Gerekirse DNS sunucunu kullanır. Şöyle yaparız.
String url = "http://reddit.com";
InetAddress inetAddress = InetAddress.getByName(address);
getHostAddress metodu
Şöyle yaparız.
System.out.println("IP = " + inetAddress.getHostAddress());
getHostName metodu
Örnek ver.

getLocalHost metodu
Şöyle yaparız. 192.168.1.2 gibi bir IP adresi döner.
InetAddress localIP = InetAddress.getLocalHost();
isReachable metodu
Şöyle yaparız. Sanırım verilen adresi Ping'ler.
String ip ="172.20.1.";
if(InetAddress.getByName(host).isReachable(1000)) {...]