Yazılım Uzmanlığı Eğitimi (Java)

Yazılım Uzmanlığı Eğitimi (Java)

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.

Ön Koşul

Temel Programlama Bilgisi Gerekmektedir.

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