Ön Koşul
Eğitim Hakkında
Java programlama dili; taşınabilir, donanımdan bağımsız, güvenilir, güçlü, yazımı/okunuşu sade, çok kullanıcılı sistemlere uygun, program parçalarının farklı makinalarda birbiri ile uyumlu çalışabildiği, yorumlanan, dinamik ve yüksek performanslı bir nesne yönelimli dildir. Java programlama dili, Java ekosisteminin parçası teknolojilerle beraber “açık kaynak kodlu yazılım geliştirme” anlayışını da besler.
Bunlar ve benzeri pek çok sebepten dolayı, şu anki hakim programlama anlayışı olan NYP’nin, Java programlama dili ile öğrenilmesinin ayrıca önemi vardır.
“Java Yazılım Uzmanlığı” eğitimi, Java programlama dili aracılığı ile nesneye yönelik programlamanın (NYP’nin) içselleşmesini sağlayan bir eğitimdir.
Sertifika:
Eğitimlerimize %80 oranında katılım gösterilmesi ve eğitim müfredatına göre uygulanacak sınav/projelerin başarıyla tamamlanması durumunda, eğitimin sonunda dijital ve QR kod destekli “BT Akademi Başarı Sertifikası” verilmektedir.
Eğitim İçeriği
1. BÖLÜM
1.1. Fonksiyon (Metot) İmzası
1.2. Koşullar ve Mantık Kapıları
1.3. Döngüler
1.4. Algoritma Kavramı
1.4.1. Sözde Kod (Pseudocode)
1.4.2. Akış Diyagramı (Flowchart)
1.5. Java’nın JVM-JRE-JDK Bileşenleri
1.6. Java’da Veri Tipleri (İlkel - Referans)
1.7. Derleme İşlemi ve class Uzantılı Dosyalar
1.8. Derleyici ve Yorumlayıcı Arasındaki Farklar
1.9. NYP (OOP) ve Diğer Yaklaşımlar Üzerine
1.9.1. Soyutlama (Abstraction) Kavramı
1.9.2. Sınıf ve Nesnenin Mantığı
1.10. this Anahtar Kelimesi
1.11. Yapılandırıcı (Constructor)
1.12. Object Sınıfından Miras: toString() metodu
1.13. “Kalıtım (Inheritance)” Kavramı ve Temel Örnekler
2. BÖLÜM
2.1. Java’da Paket Yapısı ve import Anahtar Kelimesi
2.2. “İlkel (Primitive) ve Referans” Veri Tiplerinin Hafızada Gösterimi
2.2.1. “Stack”in ve “Heap”in Mantığı
2.3. static Anahtar Kelimesi
2.3.1. Nesne (Varlık) Oluşturmanın Mantığı
2.3.2. static Unsurların Hafızada Gösterimi
2.4. Kapsülleme (Encapsulation) Kavramı
2.4.1. Erişim Belirleyiciler (Access Modifiers)
2.4.2. “Erişici (Accessor) ve Değiştirici (Mutator)” Metotlar
3. BÖLÜM
3.1. Java’da Dizi (Array)
3.1.1. Problem Çözme Örnekleri
3.1.2. Nesne Dizisi
3.2. ArrayList Sınıfı ve Dizi (Array) İlişkisi
4. BÖLÜM
4.1. super Anahtar Kelimesi
4.2. Birliktelik (Association) Kavramı
4.2.1. Münasebet (Aggregation) Kavramı
4.2.2. Oluşum (Composition) Kavramı
4.3. UML’de (“Unified Modeling Language”de) Sınıf Diyagramları
5. BÖLÜM
5.1. Object Sınıfından Miras
5.1.1. equals() Metodu
5.1.2. hashCode() Metodu
5.1.3. Bu Metotların Birbiri ile Olan Bağı
5.2. Java’da Jenerik (Generic) Tipler
6. BÖLÜM
6.1. Çok Biçimlilik (Polymorphism) Kavramı
6.1.1. Yukarı Çevrim (Upcasting) ve Aşağı Çevrim (Downcasting)
6.1.2. Dinamik Bağlama (Dynamic Binding)
6.1.3. “Static Binding” ve “Dynamic Binding” Arasındaki Farklar
6.2. Arayüz (Interface) Kavramı
6.2.1. Temel Yapı
6.2.2. Java 8 ile Gelen Yenilikler
6.3. Soyut Sınıf (Abstract Class) Kavramı
7. BÖLÜM
7.1. “Class”, “Interface” ve “Abstract Class”ın Ayrımı
7.1.1. Bu Yapıları İçeren Örnek Uygulamalar
7.2. Dahili Sınıf (Inner Class) ve İsimsiz Dahili Sınıf (Anonymous Inner Class)
7.3. İstisna İşleme (Exception Handling)
7.3.1. “Throwable”, “Exception ve Error” Sınıfları
7.3.2. “try, catch ve finally” Anahtar Kelimeleri
7.3.3. throws Anahtar Kelimesi
7.3.4. “Checked Exception” ve “Unchecked Exception”
7.4. Dosya İşleme (File I/O)
7.4.1. “FileInputStream ve FileOutputStream” Sınıfları
7.4.2. ”FileReader ve FileWriter” Sınıfları
7.4.3. “BufferedReader ve BufferedWriter” Sınıfları
8. BÖLÜM
8.1. Java Collections Framework
8.1.1. List Arayüzü ve İmplementasyonları
8.1.2. Stack Sınıfı
8.1.3. Queue Arayüzü ve İmplementasyonları
8.1.4. Set Arayüzü ve İmplementasyonları
8.1.5. “Iterable ve Iterator” Arayüzleri
8.2. Map Arayüzü ve İmplementasyonları
9. BÖLÜM
9.1. “String”ler ile İlgili Sorunlara Çözümler
9.1.1. “StringBuffer ve StringBuilder” Sınıfları
9.2. Lambda İfadeleri
9.3. Nesneleri Sıralamak
9.3.1. “Comparator ve Comparable” Arayüzleri
9.4. Nesneleri Kopyalamak
9.4.1. Cloneable Arayüzü
9.4.2. Object Sınıfından Miras: clone() metodu
9.5. Java Serialization (Serileştirme)
9.5.1. Serializable Arayüzü
9.5.2. “Deserialization” İşlemi
9.5.3. ObjectInputStream ve ObjectOutputStream Sınıfları
9.5.4. “Serializable Object” ve “Non-Serializable Object” Farkları
9.5.5. transient Anahtar Kelimesi
9.6. Java'da "Garbage Collection" Mantığı
9.6.1. Object Sınıfından Miras: finalize() Metodu
9.6.2. System.gc() Metodu
9.6.3. System.runFinalization() Metodu
9.7. Java’da XML Dosyasını Ayrıştırmak
9.7.1. SAXParser Soyut Sınıfı
9.7.2. Haber Sayfasını Ayrıştırıp Haber Listesi Üretmek
10. BÖLÜM
10.1. Tek Nesne Tasarım Deseni (Singleton Design Pattern)
10.2. Java’da İş Parçacığı (Thread) Kullanımı
10.2.1. Thread Sınıfı ve Runnable Arayüzü
10.2.2. “Single-Threaded Program” ve “Multi-Threaded Program”
10.2.3. “Thread”leri Senkronize Etmek
10.2.4. “Thread”ler ile İlgili Object Sınıfındaki Metotlar
10.2.5. CopyOnWriteArrayList Sınıfı
10.2.6. “Thread” Senkronizasyonu ile Dosya İşleme Örneği
10.3. Java’da “Logging”
10.3.1. Logger Sınıfı
10.3.2. “Log” Seviyeleri
10.3.3. “Log” Dosyası Oluşturmak
10.4. SOLID Prensipleri
10.4.1. “Single-Responsibility Principle” (SRP)
10.4.2. “Open-Closed Principle” (OCP)
10.4.3. “Liskov Substitution Principle” (LSP)
10.4.4. “Interface Segregation Principle” (ISP)
10.4.5. “Dependency Inversion Principle” (DIP)
11. BÖLÜM
11.1. JDBC
11.1.1. “Connection, Statement ve ResultSet” Arayüzleri
11.1.2. SQLException’ın Detaylandırılması
11.1.3. ResultSet ile Kayıtların Taranması
11.1.4. Kayıtlara Karşılık Varlık: Varlık (Entity) Sınıfı
11.1.5. İlgili Sorgular, İlgili Metotlarda: DAL (Data Access Layer) Sınıfı
11.1.6. Varlık ve DAL Sınıfları için Ata Sınıflar
12. BÖLÜM
12.1. JDBC Bağlantı Bilgilerinin Güvenliği
12.1.1. XML’de properties Etiketi
12.1.2. Java’da Properties Sınıfı
12.2. Hibernate
12.2.1. ORM’nin Anlamı
12.2.2. hibernate.cfg.xml Dosyası
12.2.3. “SessionFactory, Session ve Transaction” Arayüzleri
12.2.4. HibernateUtil Sınıfının Tanımlanması
12.3. HibernateUtil Sınıfının Detayları
12.3.1. “SessionFactory, Session ve Transaction” Üretimi
12.4. Varlık (Entity) Sınıfları
12.4.1. “Annotation” Kullanarak Tablo ile Eşleşim (Mapping)
12.5. DAL Sınıfları
12.5.1. Session Üzerinden Veri Tabanı İşlemi Metotları
12.5.2. “Transaction”ın Yapısı
12.6. Varlık (Entity) ve DAL Sınıfları için Ata Sınıfların Tanımlanması
13. BÖLÜM
13.1. Swing ile Görsel Bileşen Tanımlama Örnekleri
13.2. MVC Projesinin “View” Katmanını Swing Kütüphanesi ile Yapılandırmak
13.2.1. Sekme Levhası, Sekme Eklemek, Paneller, Panel Düzenleri
13.2.2. Form Ekranları içinde Tuşlar, Metin Alanları vb.
13.2.3. Veri Tablosunun (“Data Table”ın) Yapılandırılması
13.2.4. Tablo Modelinin Nesneye Yönelik Anlayışla Oluşturulması (AbstractTableModel Sınıfı)
14. BÖLÜM
14.1. MVC Projesinin “Controller” Katmanını Yapılandırmak
14.1.1. “Model” ve “View” Katmanlarını Birleştirmek
14.1.2. “Listener” Mantığı ve ActionLister Eklemek
14.1.3. “Controller” Sınıfları için Ata Sınıflar
14.2. Hibernate ile İlişkisel Veri Tabanı Yapısı
14.2.1. İlgili “Annotation”lar ile Yapının Kurulması (@OneToOne, @OneToMany, @ManyToOne, @ManyToMany)
14.2.2. “@JoinColumn Annotation” ve “mappedBy Attribute” Farkı
14.2.3. “Fetch Types” (Lazy Loading, Eager Loading)
15. BÖLÜM
15.1. iText Kütüphanesi
15.1.1. Veri Tabanı Bilgilerinden PDF Oluşturmak
15.2. JasperReports için iReport-Designer Kurulumu
15.3. iReport-Designer Uygulamasının Kullanılması
15.3.1. jrxml Uzantılı Rapor Görselleri
15.4. Java ile Rapor Görseline Verilerin Yüklenmesi/Gösterilmesi
15.4.1. JasperReports Library
15.4.2. Rapor Yönetimi Sınıfında İlgili Metotların Yazılması
15.5. Programlama Yapmadan Rapor Oluşturmak
15.5.1. iReport-Designer’da JDBC Bağlantısı ve “Data Source”
15.5.2. iReport-Designer’da Veri Tablosu (Data Table) Oluşturmak
16. BÖLÜM
16.1. Sunucunun Kurulumu/Yapılandırılması
16.1.1. “Connection Pool” ve “Connection Resource”
16.1.2. JNDI ve JTA Bağı
16.1.3. persistance.xml
16.2. Dinamik Web Projesi Oluşturmak
16.2.1. Sunucu, JPA ve JSF’nin Dahil Edilmesi
16.3. Projenin WebContent Klasörü
16.3.1. web.xml
16.3.2. Facelet Composition Page
16.3.3. Template, Header, Footer
16.3.4. CSS Dosyalarının Dahil Edilmesi
16.3.5. Grafik (JPG,PNG vb.) Dosyalarının Dahil Edilmesi
16.4. Projenin src Klasörü
16.4.1. JPA “Annotation”ları
16.4.2. “Entity Bean”
16.4.3. “Managed Bean”
16.5. “JSF Facelets Tag Library”
16.5.1. Managed Bean ile İletişim
17. BÖLÜM
17.1. Veri Tabanında Veri İşlemleri için Form Oluşturmak
17.1.1. Web Sayfasında Formların Oluşturulması
17.1.2. “Managed Bean”de Ekle-Sil-Güncelle için Metotlar
17.2. faces-config.xml
17.2.1. “Validator” Oluşturmak
17.3. Validator Arayüzü
17.4. Formlara JSF Etiketleri ile “Validator” Tanıtımı
17.5. Form Sayfasına TC Kimlik için “Validator” Eklemek Örneği
17.6. Web Sayfaları Arası Geçişin Kolaylaştırılması
17.6.1. Web Projesine JavaScript’in Dahil Edilmesi
17.6.2. JavaScript ile Yazılan Fonksiyonların Kullanılması
18. BÖLÜM
18.1. Form Sayfasında multipart/form-data
18.1.1. JSF h:inputFile Etiketi ile Gözat (Browse)
18.1.2. Grafik Dosyalarının Veri Tabanında Temsili
18.2. Web Sayfasında Grafik Dosyası Gösterimi
18.2.1. Yeni Web Sayfası Üretmek için Servlet
18.2.2. HttpServlet Arayüzünde doGet() ve doPost() Metotları
18.2.3. Web Sayfasında “Servlet”in Çağrılması
18.3. Oturum (Session) Yönetimi
18.3.1. HttpSession Arayüzü
18.3.2. JSP Dosyaları Oluşturmak ve “Servlet” Yazmak
19. BÖLÜM
19.1. “Dependency Injection” (DI)
19.2. “Dependency Inversion Principle” (DIP)
19.3. “Aspect Oriented Programming” (AOP)
19.4. Spring Boot ile Web Projesi Oluşturmak
19.4.1. https://start.spring.io Sayfası
19.4.2. “Project Metadata”larının Anlamları
19.4.3. Bağımlılıkların (Dependencies) Eklenmesi
19.4.4. Maven Projesi Oluşturmak
19.4.5. Gradle Projesi Oluşturmak
20. BÖLÜM
20.1. MVC’de “Model” Katmanı
20.1.1. Varlık (Entity) Sınıfı
20.1.2. Depo (Repository) Sınıfı
20.1.3. Servis (Service) Sınıfı
20.2. MVC’de “View” Katmanı
20.2.1. Thymeleaf Şablon Motorunun Dahil Edilmesi
20.2.2. Açılış Sayfasının Yapılandırılması
20.2.3. Kayıt Sayfasının Yapılandırılması
20.3. MVC’de “Controller” Katmanı ile Sayfaların Yönetimi
20.3.1. “Controller” ile “Service”in İletişimi
20.3.2. İlgili API Uç Noktasının (“Endpoint”inin) Yapacaklarının Anlatılması
21. BÖLÜM
21.1. Spring Boot ile REST API Yapılandırmak
21.1.1. HTTP “GET, POST, PUT, DELETE” Metotlarının Tanımlanması
21.1.2. REST ile İlgili “Annotation”ların Mantığı ve Kullanımı
21.1.3. Postman ile HTTP Metotlarının Test Edilmesi
21.2. Git ve GitHub
21.2.1. Git ve GitHub’ın Mantığı
21.2.2. İlgili Git Komutları
21.2.3. Uygulamanın GitHub’a Yüklenmesi
22. BÖLÜM
22.1. Mikroservisler
22.1.1. Monolitik Mimari ve Mikroservis Mimarisi Farkları
22.1.2. Mikroservis Mimarisinin Avantajları
22.1.3. Mikroservis Mimarisi Ne Zaman Kullanılmalı ?
22.2. Spring Profilleri
22.2.1. “Development, Test, Production” Profillerinin Mantığı
22.3. Mikroservisin Bulut Üzerinden Yayınlanması için “Production” Profili
22.3.1. Kullanılan Bulut Ortamının Özellikleri
22.3.2. Uygulamayı Bulut için Yapılandırmak
22.3.3. Dağıtım “Deployment” Aşamaları
23. BÖLÜM
23.1. “API Gateway”
23.1.1. Temel Mantık ve Katmanlar
23.1.2. Temel Güvenlik Ayarları
23.2. “API Gateway”den Diğer “REST API”lara Bağlanmak
23.2.1. Retrofit Kütüphanesinin Mantığı
23.2.2. Retrofit Konfigürasyon Sınıfları
23.2.3. Diğer “REST API”lar için Temel Mantığın Retrofit ile Kurulması
24. BÖLÜM
24.1. Güvenlik Katmanının Yapılandırılması
24.1.1. “Spring Security”nin Temel Bileşenleri
24.1.2. JWT’nin Temel Mantığı
24.1.3. RSA Algoritmasının Asimetrik Yapısının Mantığı
24.1.4. “Spring Security Filter Chain”in Genel Mantığı
24.1.5. Kimlik Doğrulama (Authentication)
24.1.6. Yetkilendirme (Authorization)
25. BÖLÜM
25.1. Postman ile “API Gateway”in Testi
25.1.1. “Authorization” Tiplerinin Değiştirilmesi
25.1.2. Uygulama için Kaydolmak (Sign Up)
25.1.3. Uygulama için Oturum Açmak (Sign In)
25.1.4. Oturum Üzerinde Farklı Servislere Bağlanmak
25.1.5. “Development” ve “Production” Profilleri için Ayrı Ayrı Oturum Açmak
25.2. Spring Boot Test Profili
25.2.1. Senaryolar: “Worst Case” ve “Best Case”
25.2.2. Birim Testi (Unit Testing)
25.2.3. Entegrasyon Testi (Integration Testing)
25.2.4. Bu Testlerin Farkları ve Benzerlikleri
Önemli Notlar
Program ücretlerine KDV dahil değildir.
Genel katılıma açık programların açılması için yeterli kontenjanın sağlanması gerekmektedir.
Kontenjan sağlanamadığı durumlarda BT Akademi programı açmama hakkını saklı tutar.
BT Akademi, duyrulmuş programların tarihlerini değiştirme hakkını saklı tutar. Programa kayıt olmuş kişiler bu değişikliklerden haberdar edilir.