Ayhan Alkan SUN PS İstanbul Akademik Java
Ajanda ● Java Platform Tanıtımı ● Bilimsel / Akademik Kullanım Örnekleri
Ajanda ● C/C++'dan Java'ya ● Java Platformu ● Nasıl Temin Edilir? Nereden Öğrenilir? ● Geliştirme Araçları ● Java Topluluğu, Standartlar ve Açık Kod Hareketi ● Diger Platformlarla Etkileşim / Eşgüdüm ● Performans Meselesi ● Web'den Ulaşılailir Kaynaklar ● Matematik, Fizik, Biyoloji, Biyoenformatik, Kimya ● Ekonomi, Finans, Sosyoloji ● Bilgisayar Bilimleri, Yapay Zeka, Bilgi Temsili, Ontolojiler, Semantik Web ● Mühendislik Uygulamaları PlatformÖrnekler
C/C++'dan Java'ya Java Platformu Nasıl Temin Edilir? Nereden Öğrenilir? Geliştirme Araçları Java Topluluğu, Standartlar ve Açık Kod Hareketi Diger Platformlarla Etkileşim / Eşgüdüm Performans Meselesi Web'den Ulaşılailir Kaynaklar Matematik, Fizik, Biyoloji,Biyoenformatik, Kimya Ekonomi, Finans, Sosyoloji Bilgisayar Bilimleri, Yapay Zeka, Bilgi Temsili, Ontolojiler, Semantik Web Mühendislik Uygulamaları PlatformÖrnekler
"Herşey olabildiğince basit olmalı, daha basit değl." Albert Einstein
Java Dili “The Java programming language is a general-purpose, concurrent, class- based, object-oriented language” “Java programlama dili, genel amaçlı, koşutzamanlı, sınıf temelli, nesne yönelimli bir dildir.” The Java Language Specification James Gosling, Bill Joy, Guy Steele, Gilad Bracha
C++'dan Farkları ● 'Pointer' yok ● Çoklu kalıtsallık (multiple inheritance) yok ● Nesne öğesi olmayan değişken tanımlanamaz
Diğer Özellikleri ● Tam nesne yönelimli (Object Oriented) ● Prosedürel ● Değişken tipine duyarlı ● Dahili bellek yöneticisi ● Çok yollu (multithread) programlama ● Hiyerarşik hata denetimi
C/C++'dan Java'ya Java Platformu Nasıl Temin Edilir? Nereden Öğrenilir? Geliştirme Araçları Java Topluluğu, Standartlar ve Açık Kod Hareketi Diger Platformlarla Etkileşim / Eşgüdüm Performans Meselesi Web'den Ulaşılailir Kaynaklar Matematik, Fizik, Biyoloji,Biyoenformatik, Kimya Ekonomi, Finans, Sosyoloji Bilgisayar Bilimleri, Yapay Zeka, Bilgi Temsili, Ontolojiler, Semantik Web Mühendislik Uygulamaları PlatformÖrnekler
Sürümler Bilimsel / Akademik çalışmalar için en uygun sürüm: J2SE
J2SE İçeriği – Mimari
Mikro Aygıtlara Java Yaklaşımı – J2ME J2ME Profili J2ME Kütüphaneleri Java Sanal Makinası J2ME Konfigürasyonu “Asgari müşterekler”i tanımlayan standartlar ve işletim ortamı Üst seviyede işlevsellik tanımları (grafik arayüz, kayıt işleme...)
J2ME Teknolojileri J2ME CDCJavaCard APIJ2ME CLDC CVM JavaCardVM KVM Open Platform Profile GSM Profile PDA Profile MIDP Personel Profile J 2 M EJavaCard
C/C++'dan Java'ya Java Platformu Nasıl Temin Edilir? Nereden Öğrenilir? Geliştirme Araçları Java Topluluğu, Standartlar ve Açık Kod Hareketi Diger Platformlarla Etkileşim / Eşgüdüm Performans Meselesi Web'den Ulaşılailir Kaynaklar Matematik, Fizik, Biyoloji,Biyoenformatik, Kimya Ekonomi, Finans, Sosyoloji Bilgisayar Bilimleri, Yapay Zeka, Bilgi Temsili, Ontolojiler, Semantik Web Mühendislik Uygulamaları PlatformÖrnekler
İlk Adres ● Resmi Java sitesi : Neler var : ● Linux, Solaris, Windows için JDK ve JVM sürümleri ● Eğitim materyalleri, program örnekleri ● Haberler ● Ek / opsiyonel paketler
“Developer Connection” ● Java programcılarının sitesi ● Katılım ücretsiz ● Forumlar ● JavaOne konfreans sunumları ● Erken sürümler, test/beta sürümleri ● Java'yı geliştiren mühendislerle 'chat' ● Ücretsiz e-kitaplar
“Blueprints” ● Deneyimlerin paylaşıldığı site ● Teknoloji tanıtımlalrı ● Rehber dökümanlar ● Tam uygulama örnekleri ● Tasarım örüntüleri (design patterns) ● SSS (FAQ)
C/C++'dan Java'ya Java Platformu Nasıl Temin Edilir? Nereden Öğrenilir? Geliştirme Araçları Java Topluluğu, Standartlar ve Açık Kod Hareketi Diger Platformlarla Etkileşim / Eşgüdüm Performans Meselesi Web'den Ulaşılailir Kaynaklar Matematik, Fizik, Biyoloji,Biyoenformatik, Kimya Ekonomi, Finans, Sosyoloji Bilgisayar Bilimleri, Yapay Zeka, Bilgi Temsili, Ontolojiler, Semantik Web Mühendislik Uygulamaları PlatformÖrnekler
Minimalist Programcı Bütün ihtiyacınız : JDK (J2SE) En sevdiğiniz metin editörü
Bedava IDE'ler ● Forte for Java Community Edition ● Net Beans ● Eclipse ● Jedit
Araç Kutunuzda Bulunsun ● Ant make benzeri, XML bazlı, platform bağımsız ● Junit Test sistemi - ● IzPack Kurulum Sihirmazı -
C/C++'dan Java'ya Java Platformu Nasıl Temin Edilir? Nereden Öğrenilir? Geliştirme Araçları Java Topluluğu, Standartlar ve Açık Kod Hareketi Diger Platformlarla Etkileşim / Eşgüdüm Performans Meselesi Web'den Ulaşılailir Kaynaklar Matematik, Fizik, Biyoloji,Biyoenformatik, Kimya Ekonomi, Finans, Sosyoloji Bilgisayar Bilimleri, Yapay Zeka, Bilgi Temsili, Ontolojiler, Semantik Web Mühendislik Uygulamaları PlatformÖrnekler
Java Community Process (JCP) ● Java teknolojilerinin (Java platformunun kendisi dahil) tartışıldığı, şekillendirildiği, herkese açık bir standart komitesi ● Standart önerilerini Java Specification Request (JSR) adı altında yapar ● 200'e yakın JSR tanımlandı
JSR Örnekleri ● 13 - Decimal Arithmetic Enhancement ● 49 - Web Based Industrial Monitoring Framework ● 69 - Java OLAP Interface (JOLAP) ● 73 - Data Mining API ● 83 - Multiarray package ● 87 - Java Agent Services
JSR Örnekleri ● 94 - Java Rule Engine API ● Units Specification ● 138 – Performance Metric Instrumentation ● Java 3D API 1.4
Kullanılan Programlama Diline Göre sourceforge.net Projeleri
C/C++'dan Java'ya Java Platformu Nasıl Temin Edilir? Nereden Öğrenilir? Geliştirme Araçları Java Topluluğu, Standartlar ve Açık Kod Hareketi Diger Platformlarla Etkileşim / Eşgüdüm Performans Meselesi Web'den Ulaşılailir Kaynaklar Matematik, Fizik, Biyoloji,Biyoenformatik, Kimya Ekonomi, Finans, Sosyoloji Bilgisayar Bilimleri, Yapay Zeka, Bilgi Temsili, Ontolojiler, Semantik Web Mühendislik Uygulamaları PlatformÖrnekler
JVM İçin Yazılmış Diller TCL LISP SCHEME Prolog WebL BASIC LOGO CLIPS COBOL Ada JudoScrpt BeanShell JavaScript Python Forth
Standart Protokoller ● SOAP / WebServices ● CORBA – IIOP ● XMLP ● ebXML ● HTTP
Java Native Interface (JNI) Java'dan C/C++'ya C/C++'dan Java'ya.dll veya.so'lar üzerinden iki yönlü erişim
C/C++'dan Java'ya Java Platformu Nasıl Temin Edilir? Nereden Öğrenilir? Geliştirme Araçları Java Topluluğu, Standartlar ve Açık Kod Hareketi Diger Platformlarla Etkileşim / Eşgüdüm Performans Meselesi Web'den Ulaşılailir Kaynaklar Matematik, Fizik, Biyoloji,Biyoenformatik, Kimya Ekonomi, Finans, Sosyoloji Bilgisayar Bilimleri, Yapay Zeka, Bilgi Temsili, Ontolojiler, Semantik Web Mühendislik Uygulamaları PlatformÖrnekler
Evet Bir Java programı iyi yazılmış bir C/C++ programından daha yavaş çalışır. Çünkü Java sanal makinası Bytecode'u yerel koda çevirmek için zaman harcar.
Performans Artırıcı Önlemler ● Yerel koda derleyen araçlar ● MİB yoğun işlemler için yerel kodda yazılmış kütüphanelere erişmek ● Programın çalışmasını analiz ederek tıkanıklık noktalarını bulmak ● Koşutzamanlı programlama ● Nesnelerin yeniden kullanımı ● Bellek yönetimini denetlemek
C/C++'dan Java'ya Java Platformu Nasıl Temin Edilir? Nereden Öğrenilir? Geliştirme Araçları Java Topluluğu, Standartlar ve Açık Kod Hareketi Diger Platformlarla Etkileşim / Eşgüdüm Performans Meselesi Web'den Ulaşılailir Kaynaklar Matematik, Fizik, Biyoloji,Biyoenformatik, Kimya Ekonomi, Finans, Sosyoloji Bilgisayar Bilimleri, Yapay Zeka, Bilgi Temsili, Ontolojiler, Semantik Web Mühendislik Uygulamaları PlatformÖrnekler
Dergiler ● JavaWorld ● Dot-Com Builder ● JavaPro ● Java Developer Journal
Geliştiricelere Özel ● Developerworks ● JGuru ● OnJava ● Developer Code Camps
J2ME Kaynakları ● Resmi J2ME sitesi ● MicroJava Network ● Kablosuz teknoloji haberleri ● anywhereyougo.com
Açık Kod, Shareware ● Jakarta ● Source Forge ● Alphaworks ● JARS
C/C++'dan Java'ya Java Platformu Nasıl Temin Edilir? Nereden Öğrenilir? Geliştirme Araçları Java Topluluğu, Standartlar ve Açık Kod Hareketi Diger Platformlarla Etkileşim / Eşgüdüm Performans Meselesi Web'den Ulaşılailir Kaynaklar Matematik, Fizik, Biyoloji,Biyoenformatik, Kimya Ekonomi, Finans, Sosyoloji Bilgisayar Bilimleri, Yapay Zeka, Bilgi Temsili, Ontolojiler, Semantik Web Mühendislik Uygulamaları PlatformÖrnekler
COLT ● Hızlı veri yapıları ve algoritmalar ● Lineer cebir, çok boyutlu matrisler, fonksiyonlar (Bessel, Airy), istatistik, polinomlar, Chebyshev serileri ● 2B, 3B görselleştirme araçları
BioJava ● Gen dizileri (sequence) işleme ● Standart veri dosyaları çözümleme ● CORBA ● DAS desteği ● AceDB ● Dinamik programlama
OmniGene ● Web Servisleri ile biyoinformatikte veri entegrasyonu çözümü ● Veri depolama : Ensembl, NCBI, Swissprot, Pubmed ● İletişim modeli : HTTP SOAP DAS Taşıyıcı Katman Veri katmanı Kodlama şeması
C/C++'dan Java'ya Java Platformu Nasıl Temin Edilir? Nereden Öğrenilir? Geliştirme Araçları Java Topluluğu, Standartlar ve Açık Kod Hareketi Diger Platformlarla Etkileşim / Eşgüdüm Performans Meselesi Web'den Ulaşılailir Kaynaklar Matematik, Fizik, Biyoloji,Biyoenformatik, Kimya Ekonomi, Finans, Sosyoloji Bilgisayar Bilimleri, Yapay Zeka, Bilgi Temsili, Ontolojiler, Semantik Web Mühendislik Uygulamaları PlatformÖrnekler
Foreks Mercury ● Gerçek zamanlı finansal veri akışından – evrensel veri tabanı eşleyici – bellekte hızlı erişilebilir veri yapıları – 'publish-subscribe' yöntemiyle istemcilere veri dağıtımı ● Web tasarımcıları için taglib ● Finansal grafikler
JAM (Java Agents for Meta- learning) ● Finansal bilgi ağlarında sahtecilik ve sızma yakalama ● Yerel sınıflayıcı 'ajan'ların yada modellerin iki yada daha fazlasının 'meta-öğrenme' ajanı oluşturması
Mars Simulation Project ● Gelecekteki Mars yerleşimleri simülasyonu ● Detaylı bir sanal dünyada 'multi- agent' toplum oluşumu ● XML konfigürasyon dosyalarıyla simülasyonun özelliklerini düzenleyebilme
C/C++'dan Java'ya Java Platformu Nasıl Temin Edilir? Nereden Öğrenilir? Geliştirme Araçları Java Topluluğu, Standartlar ve Açık Kod Hareketi Diger Platformlarla Etkileşim / Eşgüdüm Performans Meselesi Web'den Ulaşılailir Kaynaklar Matematik, Fizik, Biyoloji,Biyoenformatik, Kimya Ekonomi, Finans, Sosyoloji Bilgisayar Bilimleri, Yapay Zeka, Bilgi Temsili, Ontolojiler, Semantik Web Mühendislik Uygulamaları PlatformÖrnekler
"Real hackers can write assembly code in any language." Anonim
The Byte Code Engineering Library (BCEL) ● Java class dosyalarını analiz etmek, yaratmak, düzenlemek için araçlar ● Çalışma sırasında (run-time) class nesnelerini dinamik olarak üretebilir ● JVM (Java Sanal Makinesi) öğrenimi için çok yararlı
POI ● Microsoft OLE 2 Compound Document formatlı dosyaları işleyebilir ● Örneğin MS Excel, MS Word dosyalarına Java uygulamalarından erişilebilir ● Web uygulamaları ve 'Full text search' özellikleri planlanıyor
Aspectj ● Java için Bakış Açısı Yönelimli Programlama (AOP) genişletmesi ● Mevcut uygulamalarla entegre edilebilir ● Derleyici, hata ayıklayıcı, döküman üretici ● IDE bileşenleri
Weka ● Makina öğrenmesi algoritmaları : Sınıflama (C4.5, OneR, lineer regresyon...), kural araştırma, veri filtreleme ● Hazır kullanıcı arayüzü ile kolay veri madenciliği (data mining) uygulaması ● Görselleştirme araçları
Protégé 2000 ● Belli bir alana ait ontoloji tanımlama ● Alan uzmanlarına sunulacak arayüzü düzenleme ● Alan bilgisi girişi ve saklama ● Genişletilebilir mimari ● Bilgiye erişim ve görüntüleme için hazır kütüphaneler
IsaViz: A Visual Authoring Tool for RDF Jena Semantic Web Toolkit
C/C++'dan Java'ya Java Platformu Nasıl Temin Edilir? Nereden Öğrenilir? Geliştirme Araçları Java Topluluğu, Standartlar ve Açık Kod Hareketi Diger Platformlarla Etkileşim / Eşgüdüm Performans Meselesi Web'den Ulaşılailir Kaynaklar Matematik, Fizik, Biyoloji,Biyoenformatik, Kimya Ekonomi, Finans, Sosyoloji Bilgisayar Bilimleri, Yapay Zeka, Bilgi Temsili, Ontolojiler, Semantik Web Mühendislik Uygulamaları PlatformÖrnekler
ETB (Engineer's Toolbox) ● Web bazlı servis modeli ● Rijid cisimler mekanigi ● Aşınma ve kırılma mekaniği ● Dinamik ● Sayısal Analiz
Ayhan Alkan