Bölüm 24 Java Ağ Uygulamaları 24.1 Java Appletleri Applet, Web tarayıcısında çalışan bir Java programıdır. Bir applet , Java uygulaması için tamamen fonskiyonel olabilir çünkü bütün Java API’ye sahiptir. Bir applet ve bir bağımsız Java uygulaması arasında aşağıdakiler gibi bazı önemli farklılıklar bulunmaktadır: Applet, java.applet.Applet sınıfından genişletilen bir Java sınıfıdır. main() metodu applet üzerinde çalışmaz ve applet sınıfı main() metodunu tanımlamamaktadır. Appletler, HTML sayfasında gömülü olarak tasarlanır. Bir kullanıcı applet içeren bir HTML sayfasını görüntülediğinde, applet için olan kod kullanıcı makinasına indirilir. Bir JVM’nin applet görüntülemesi gerekmektedir. JVM, hem bir Web tarayıcının eklentisi olabilir hem de ayrı bir çalışma zamanında bulunan enviroment olabilir. Kullanıcı makinesine kurulu JVM, applet sınıfı için bir instance oluşturur ve applet’in yaşam süresince çeşitli metotlar çalıştırır. Bir Applet’in Yaşam Döngüsü: Applet sınıfındaki dört metot size üzerinde önemli bir applet oluşturabileceğiniz bir çalışma ortamı verir. init: Bu metot, applet için gerekli olan her türlü başlatma için tasarlanmıştır. start: Bu metot, tarayıcı init metodunu çağırdıktan sonra otomatik olarak çağrılır. Ayrıca, kullanıcı diğer sayflara gittikten sonra her ne zaman applet’i içeren sayfaya geri dönerse çağrılır. paint: start() metodunun hemen ardından ve ayrıca applet her ne zaman tarayıcıda kendini yeniden düzenlemesi gerekiyorsa çalıştırılır. stop: Bu metot, kullanıcının appletin bulunduğu sayfadan ayrıldığı zaman otomatik olarak çağrılır. Bu nedenle, bu metot aynı applet içinde durmadan çağrılabilir. destroy: Bu metot sadece tarayıcı kapatıldığı zaman çağrılır. "Hello, World" Applet: Aşağıdaki, HelloWorldApplet.java olarak adlandırılmış basit bir appletdir: import java.applet.*; import java.awt.*; public class HelloWorldApplet extends Applet { public void paint (Graphics g) { g.drawString ("Hello World", 25, 50); } } Applet Sınıfı: Her applet, java.applet.Applet sınıfının bir uzantısıdır. Temel Applet sınıfı, Applet sınıfından elde edilmiş ve tarayıcı içeriğinden bilgi ve servisler almak için çağrılabilir metotlar sağlar. Bir Applet’i Çalıştırma: Bir applet, HTML dosyasına gömülü bildirimler tarafından çalıştırılabilir ve bu dosya bir applet görüntüleyici veya üstünde Java gömülü bulunan tarayıcılar tarafından görüntülenebilir. <applet> etiketi, appleti bir HTML dosyasına gömmek için temel bir etikettir. Aşağıda ,”Hello World” isimli appletin çalıştırılmasını görebiliriz: <html> <title> Hello World Applet</title> <applet code="HelloWorldApplet.class" width="320" height="120"> </applet> </html> --<applet> etiketinin kod niteliği gereklidir. Bu, çalışması gereken Applet sınıfını belirtir. Ayrıca width ve height ‘ta ,applet’in çalışacağa panelin ilk boyunu belirlemek için gereklidir. Applet bildirimi </applet> etiketi ile kapatılmalıdır. Appletleri kendi bilgisayarınızda çalıştırmak için gereken güvenlik adımları Appletleri web tarayıcıda çalıştırabilmek için 32bit JRE makinanızda kurulu olmalıdır. 64 bit java sürümlerinde Web Tarayıcı eklentisi desteklenmiyor. Aşağıdaki ayarları kullanın: Applet Parametrelerini Belirleme: Aşağıdaki örnek, appletin dökümanda belirlenen parametre ayarlarını nasıl cevaplayacağını göstermektedir. Applet.getParameter() metodu verilen parametre adına göre parametre getirir.(parametrenin değeri her zaman stringtir) import java.applet.*; import java.awt.*; public class appletParameter extends Applet { private String strDefault = "Hello! Java Applet."; public void paint(Graphics g) { String strParameter = getParameter("Message"); if (strParameter == null) strParameter = strDefault; setBackground(Color.GREEN); g.drawString(strParameter, 50, 25); } } --Aşağıdaki içine appletParameter.class gömülü bir HTML dosyası örneğidir. HTML dosyası <param> etiketini kullanarak appletin parametlerini belirler. <html> <title>Applet Test</title> <h1> This is the applet: </h1> <applet code="appletParameter.class" width="800" height="100"> <param name="message" value="This is HTML parameter Text."> </applet> </html> Not: Parametre isimleri büyük küçük harfe duyarlı değildir. 24.2 E-mail Gönderme Java Uygulamanızı kullanarak email göndermek oldukça kolaydır ama başlamak için öncellikle JavaMail API’si makinanıza kurulu olmalıdır. JavaMail’in son versiyonunu, Java’nın standart web sitesinden indirebilirsiniz. http://www.oracle.com/technetwork/java/javamail/index-138643.html Dosyaları indirin ve açın, her iki uygulama için bir dizi jar dosyası bulacaksınız. Öncelikle mail.jar dosyalarını CLASSPATH konumuna eklemeniz gerekmektedir( Eclipse içindeki src dizinine sürükleyip bırakın, mail.jar dosyasına sağ tıklayıp Build Path-> Add to Build Path kısmını seçin) Burada, GOOGLE GMAIL SMTP SERVER aracılığıyla basit bir email gönderme örneğini görüyoruz. Burada, localhost’unuzun internete bağlı olduğu ve email göndermek için yeterli olduğu varsayılıyor. import java.util.*; import javax.mail.*; import javax.mail.internet.*; public class SendEmail { public static void main(String[] args) { // Sender's email ID needs to be mentioned String from = "sender@gmail.com"; String pass = "123456"; // Recipient's email ID needs to be mentioned. String to = "someone@hotmail.com"; String host = "smtp.gmail.com"; // Get system properties Properties properties = System.getProperties(); // Setup mail server properties.put("mail.smtp.starttls.enable", "true"); properties.put("mail.smtp.host", host); properties.put("mail.smtp.user", from); properties.put("mail.smtp.password", pass); properties.put("mail.smtp.port", "587"); properties.put("mail.smtp.auth", "true"); // Get the default Session object. Session session = Session.getDefaultInstance(properties); try { // Create a default MimeMessage object. MimeMessage message = new MimeMessage(session); // Set From: header field of the header. message.setFrom(new InternetAddress(from)); // Set To: header field of the header. message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: header field message.setSubject("This is the Subject Line!"); // Now set the actual message message.setText("This is actual message"); // Send message Transport transport = session.getTransport("smtp"); transport.connect(host, from, pass); transport.sendMessage(message, message.getAllRecipients()); transport.close(); System.out.println("Sent message successfully...."); } catch (MessagingException mex) { mex.printStackTrace(); } } }