Java Kurumsal Geliştirme — Kapsamlı Uzman Rehberi
Gizem Arslan Altınbaş tarafından yazılmıştır. 15+ yıllık Java kurumsal geliştirme deneyimine sahip Kıdemli Backend Geliştirici. TEB Bank (BNP Paribas)’ta yaklaşık sekiz yıl boyunca Java EE, JSF, Spring ve Oracle PL/SQL ile bankacılık uygulamaları geliştirmiştir.
Java, kurumsal yazılımların omurgası olmaya devam etmektedir. Finansal sistemler, kurumsal uygulamalar veya yüksek kullanılabilirliğe sahip backend sistemleri geliştiriyorsanız — ya da derin Java deneyimine sahip bir geliştirici arıyorsanız — bu rehber tam size göre.
Java EE (Java Enterprise Edition / Jakarta EE) Nedir?
Java EE (günümüzde Jakarta EE olarak adlandırılır), büyük ölçekli, dağıtık ve çok katmanlı kurumsal uygulamalar için standart Java SE'yi genişleten API ve spesifikasyon setidir. Web servisleri, kalıcı depolama, mesajlaşma, güvenlik ve daha fazlasını kapsayan bir çalışma ortamı (uygulama sunucusu) ve API koleksiyonu tanımlar.
Java EE şu alanlarda güç sağlar:
- İnternet bankacılığı ve finansal işlem sistemleri
- Kurumsal kaynak planlama (ERP) platformları
- Telekomünikasyon arka ofis sistemleri
- Sigorta ve sağlık bilgi sistemleri
- Kamu sektörü uygulamaları
Temel bilgiler:
- Sun Microsystems tarafından geliştirildi, şimdi Eclipse Foundation bünyesinde Jakarta EE olarak devam ediyor
- Uygulama sunucularında çalışır: JBoss/WildFly, WebLogic, WebSphere, GlassFish, Payara
- Spesifikasyon tabanlı — implementasyonlar birbirinin yerine kullanılabilir
- Bankacılık, sigorta ve telekomünikasyon gibi düzenlenmiş sektörlerde geniş ölçekte test edilmiştir
Temel Java EE Teknolojileri
Servlet'ler ve JSP
Java web uygulamalarının temeli. Java Servlet'leri HTTP isteklerini işler ve yanıt üretir. JSP (JavaServer Pages) HTML şablonlarına Java mantığını yerleştirir — JSF ve modern view framework'lerin öncüsüdür.
JSF — JavaServer Faces
JSF, sunucu taraflı web uygulamaları için standart Java EE bileşen tabanlı UI framework'üdür. Şunları sağlar:
- Yeniden kullanılabilir UI bileşen modeli
- UI durumunu destekleyen managed bean'ler
- Yerleşik doğrulama ve dönüştürme
- Sayfa akışları için navigasyon modeli
f:ajaxile AJAX desteği
JSF, 2010'lar boyunca Java EE kurumsal uygulamaları için tercih edilen UI teknolojisiydi. Bankacılık portalları, kurumsal intranet sistemleri ve finansal paneller genellikle JSF + PrimeFaces veya RichFaces ile geliştirildi.
<!-- JSF bileşen örneği -->
<h:form id="loginForm">
<h:inputText id="username" value="#{loginBean.username}" required="true" />
<h:inputSecret id="password" value="#{loginBean.password}" required="true" />
<h:commandButton value="Giriş" action="#{loginBean.login}" />
</h:form>
JAX-RS — RESTful Web Servisleri
JAX-RS, annotation'lar kullanarak Java sınıflarını ve metodlarını HTTP endpoint'lerine eşleyen REST API geliştirme spesifikasyonudur.
@Path("/hesaplar")
@Produces(MediaType.APPLICATION_JSON)
public class HesapKaynak {
@GET
@Path("/{id}")
public Response hesapGetir(@PathParam("id") Long id) {
Hesap hesap = hesapServisi.bul(id);
return Response.ok(hesap).build();
}
}
WebSocket (JSR 356)
Java EE, gerçek zamanlı çift yönlü iletişim için native WebSocket API'si içerir. Bankacılık uygulamaları WebSocket'i şu amaçlarla kullanır:
- Canlı döviz kuru akışları
- Gerçek zamanlı bakiye güncellemeleri
- İşlem durumu bildirimleri
- Tarayıcı istemcilerine anlık bildirim iletimi
JDBC ve JPA
JDBC, ilişkisel veritabanı erişimi için düşük seviyeli Java API'sidir — doğrudan SQL çalıştırma, bağlantı yönetimi ve sonuç kümesi işleme. Yüksek performanslı bankacılık uygulamalarında SQL kontrolü önemli olduğunda JDBC, ORM'ye tercih edilir.
JPA (Java Persistence API), Java nesnelerinin SQL yazmadan ilişkisel veritabanlarına kalıcı olarak saklanmasına olanak tanır. Hibernate, baskın JPA implementasyonudur.
Spring Framework
Spring, baskın Java uygulama framework'üdür ve şunları sağlar:
- Spring Core / IoC — Dependency injection container'ı
- Spring MVC — Web MVC framework'ü
- Spring Boot — Otomatik yapılandırma ile hızlı uygulama geliştirme
- Spring Security — Kimlik doğrulama ve yetkilendirme framework'ü
- Spring Data — JPA, JDBC, MongoDB üzerinde repository soyutlaması
Spring ve Java EE Karşılaştırması
| Java EE / Jakarta EE | Spring | |
|---|---|---|
| Container | Uygulama sunucusu | Gömülü (Tomcat/Jetty) veya bağımsız |
| Yapılandırma | XML + annotation (standart) | Annotation + Java config |
| Başlatma süresi | Yavaş (tam uygulama sunucusu) | Hızlı (Spring Boot) |
| Mikroservisler | Mümkün ama karmaşık | Native (Spring Boot + Spring Cloud) |
| Bankacılık mirası | Çok yaygın | Artan kabul |
Oracle PL/SQL Kurumsal Java Uygulamalarında
PL/SQL, Oracle'ın SQL'e yönelik prosedürel uzantısıdır. Büyük ölçekli bankacılık uygulamalarında iş mantığının önemli bir kısmı, depolanmış prosedürler, fonksiyonlar ve paketler olarak veritabanı katmanında yer alır.
Bankacılıkta PL/SQL Neden Kullanılır?
- Performans — Prosedürler veritabanı içinde çalışır, karmaşık işlemler için ağ gidişlerini ortadan kaldırır
- Veri bütünlüğü — Veritabanı katmanında zorunlu kılınan iş kuralları, uygulama hatalarıyla atlatılamaz
- Miras — Java katmanından önce geliştirilmiş onlarca yıllık birikmiş iş mantığı
- DBA sahipliği — Veritabanı ekipleri PL/SQL'i uygulama sürüm döngülerinden bağımsız olarak yönetir
Java'dan PL/SQL Çağırma
// JDBC CallableStatement ile depolanmış prosedür çağrısı
public BigDecimal faizHesapla(Long hesapId, LocalDate baslangic, LocalDate bitis) {
String sql = "{ ? = call PKG_FAIZ.HESAPLA(?, ?, ?) }";
try (CallableStatement cs = baglanti.prepareCall(sql)) {
cs.registerOutParameter(1, Types.NUMERIC);
cs.setLong(2, hesapId);
cs.setDate(3, Date.valueOf(baslangic));
cs.setDate(4, Date.valueOf(bitis));
cs.execute();
return cs.getBigDecimal(1);
}
}
İnternet Bankacılığı Mimarisi
İnternet bankacılığı sistemleri, en zorlu Java kurumsal uygulamalar arasındadır.
Üç Katmanlı Mimari
[Tarayıcı / Mobil Uygulama]
↓ HTTPS
[Web Katmanı — JSF / REST / Node.js]
↓ EJB / Servis katmanı
[İş Mantığı Katmanı — Java EE / Spring]
↓ JDBC / JPA
[Veri Katmanı — Oracle + PL/SQL]
Headless Bankacılık — React + Node.js + Java EE Backend
Modern bankacılık portalları ön ucu tamamen ayırır:
- Ön Uç: React / Redux SPA, Node.js BFF (Backend for Frontend) üzerinden sunulur
- Arka Uç: Node.js BFF tarafından tüketilen Java EE REST API'leri (JAX-RS)
- Kimlik Doğrulama: OAuth 2.0 / OpenID Connect
- Gerçek Zamanlı: Canlı kur akışları ve bildirimler için WebSocket
Bu mimari, TEB Bank'ta Kurumsal İnternet Bankacılığı yeniden platformlamasında uygulandı — sunucu taraflı JSF portalından Java EE REST API'leri destekli tam headless React/Node.js ön ucuna geçildi.
Bankacılık Uygulamalarında Güvenlik
- Aktarım güvenliği: Tüm bağlantılarda TLS 1.2+ zorunlu
- Kimlik doğrulama: Çok faktörlü kimlik doğrulama (SMS OTP, donanım token, mobil uygulama)
- Oturum yönetimi: Kısa ömürlü token'lar, sunucu taraflı oturum geçersiz kılma
- Yetkilendirme: Her bankacılık işlevi için ayrıntılı izinlerle RBAC
- Denetim günlüğü: Her kullanıcı eylemi zaman damgası, IP, kullanıcı kimliği ve istek yüküyle kaydedilir
Java Derleme ve CI/CD Araçları
Maven
Maven, kurumsal uygulamalar için baskın Java derleme aracıdır:
- Maven Central aracılığıyla bağımlılık yönetimi
- Proje yaşam döngüsü yönetimi (derleme, test, paketleme, dağıtım)
- Büyük bankacılık sistemlerinde yaygın çok modüllü proje derlemeleri
Jenkins
Jenkins, Java kurumsal projeleri için en yaygın kullanılan CI/CD sunucusudur. Tipik bir Java bankacılık pipeline'ı: Geliştirici Git/TFS'e gönderir → Jenkins derlemeyi tetikler → Maven derler ve testleri çalıştırır → Test ortamına dağıtım → Entegrasyon testleri → Üretim için manuel onay.
TEB Bank'tan Java Kurumsal Geliştirme Dersleri
Bankacılık ortamında (TEB Bank, BNP Paribas ortak girişimi) yaklaşık sekiz yıllık Java EE geliştirme deneyiminden edinilen pratik dersler:
İşlem Yönetimi
Bankacılık işlemleri ACID işlemleri gerektirir. Java EE, birden fazla kaynağı (veritabanı + mesaj kuyruğu) kapsayan dağıtık işlemler için JTA (Java Transaction API) sağlar.
@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class ParaTransferServisi {
public void transfer(Long kaynakHesapId, Long hedefHesapId, BigDecimal tutar) {
hesapDao.borclandir(kaynakHesapId, tutar);
hesapDao.alacaklandir(hedefHesapId, tutar);
denetimGunlugu.kaydet(kaynakHesapId, hedefHesapId, tutar);
// Herhangi bir adım exception fırlatırsa tüm işlem geri alınır
}
}
Java Sertifikaları
Oracle Certified Professional: Java SE 17 Developer
- Temel dil özellikleri (OOP, generics, collections, streams, lambda)
- Eşzamanlılık (thread'ler, kilitler, concurrent collection'lar)
- JDBC temelleri
- Modüller (Java 9+)
Oracle Certified Professional: Java EE 7 Application Developer
- Servlet'ler, JSF, JAX-RS, WebSocket
- JPA ve bean doğrulama
- EJB (Enterprise JavaBeans)
- CDI (Contexts and Dependency Injection)
Java ve Diğer Backend Dilleri Karşılaştırması
| Kriter | Java | Node.js | Python | Go |
|---|---|---|---|---|
| Kurumsal benimseme | Çok yüksek | Yüksek | Orta | Büyüyor |
| Bankacılık / finans | Baskın | Büyüyor | Sınırlı | Sınırlı |
| Performans | Yüksek (JVM JIT) | Orta | Düşük | Çok yüksek |
| Tür güvenliği | Güçlü (derleme zamanı) | İsteğe bağlı (TypeScript) | İsteğe bağlı | Güçlü |
| Miras kod tabanları | Devasa | Sınırlı | Orta | Çok sınırlı |
Yazar Hakkında: Gizem Arslan Altınbaş
Gizem Arslan Altınbaş, İzmir, Türkiye'de yaşayan ve 15+ yıllık yazılım mühendisliği deneyimine sahip Kıdemli Backend Geliştiricisidir. TEB Bank (BNP Paribas)’ta Java EE bankacılık sistemleri ve OSF Digital'de SFCC backend geliştirme kariyerini kapsamaktadır.
TEB Bank'ta geliştirdiği projeler:
- Kurumsal İnternet Bankacılığı — Java EE / JSF'ten headless React/Node.js mimarisine yeniden platformlama
- TEB FX — WebSocket kullanan gerçek zamanlı döviz kuru sistemi
- PUSULA — Java EE, JSF, Oracle PL/SQL ile iç bankacılık uygulaması
Kariyer geçmişine bakın · Hizmetlere bakın · Gizem ile iletişime geçin
Java Kurumsal Geliştirme Hakkında Sık Sorulan Sorular
Java EE (Enterprise Edition) nedir?
Java EE (günümüzde Jakarta EE), büyük ölçekli kurumsal uygulamalar için standart Java'yı genişleten bir API ve spesifikasyon setidir. Web servisleri (JAX-RS, WebSocket), UI (JSF), kalıcı depolama (JPA), mesajlaşma (JMS), güvenlik ve daha fazlasını kapsar. JBoss/WildFly veya WebLogic gibi uygulama sunucularında çalışır ve bankacılık, sigorta ile telekomünikasyon sektörlerinde yaygın olarak kullanılır.
Java EE ve Spring arasındaki fark nedir?
Java EE, uygulama sunucuları tarafından uygulanan vendor-nötr spesifikasyonlar setidir. Spring ise kendi dependency injection, MVC ve veri erişim katmanlarını sağlayan popüler açık kaynaklı bir framework'tür. Spring Boot, otomatik yapılandırma ve gömülü sunucularla kurulumu basitleştirir. Birçok kurumsal uygulama her ikisini birden kullanır: Spring uygulama katmanı için, Java EE API'leri (JTA, JMS) altyapı için.
Java'da JSF nedir?
JSF (JavaServer Faces), sunucu taraflı web uygulamaları için standart Java EE bileşen tabanlı UI framework'üdür. Yeniden kullanılabilir UI bileşenleri, durumu destekleyen managed bean'ler, yerleşik doğrulama ve AJAX desteği sağlar. 2010'lar boyunca kurumsal bankacılık portalları ve şirket içi sistemler için baskın seçimdi.
JAX-RS nedir ve nasıl kullanılır?
JAX-RS, annotation'lar kullanarak RESTful web servisleri geliştirmek için Java EE spesifikasyonudur. Bir Java sınıfını @Path, @GET, @POST vb. ile işaretleyerek HTTP endpoint'lerine eşlersiniz. RESTEasy (JBoss/WildFly) ve Jersey başlıca implementasyonlardır. JAX-RS, Java EE uygulamalarından REST API'leri sunmanın standart yoludur.
Java bankacılık ve finansal uygulamalarda nasıl kullanılır?
Java, kararlılığı, performansı ve kurumsal ekosistemi nedeniyle bankacılık ve finansta baskın dildir. Bankacılık uygulamaları; işlem yönetimi için Java EE, web katmanı için JSF veya REST API'leri, veritabanı erişimi için JDBC/JPA, depolanmış prosedür mantığı için Oracle PL/SQL ve gerçek zamanlı veri akışları için WebSocket kullanır.
Oracle PL/SQL nedir ve Java uygulamalarında neden kullanılır?
Oracle PL/SQL, Oracle'ın veritabanı içinde depolanmış prosedürler, fonksiyonlar, tetikleyiciler ve paketler yazmak için prosedürel SQL uzantısıdır. Java uygulamaları PL/SQL'i JDBC CallableStatement aracılığıyla çağırır. Bankacılıkta yaygındır çünkü karmaşık iş mantığı performans için veritabanı içinde çalışabilir, PL/SQL uygulama hatalarının atlayamayacağı veri bütünlüğü kuralları zorlar ve onlarca yıllık finansal mantık zaten depolanmış prosedürlerde kodlanmıştır.
Java kurumsal geliştirmede üç katmanlı mimari nedir?
Üç katmanlı mimari bir Java kurumsal uygulamasını şu şekilde ayırır: (1) Sunum katmanı — tarayıcı veya istemci uygulama; (2) İş mantığı katmanı — kuralları ve orkestrasyonu yöneten Java EE/Spring servisleri; (3) Veri katmanı — ilişkisel veritabanı (Oracle, PostgreSQL). Her katman bağımsız çalışır, yatay ölçeklemeye, bağımsız dağıtıma ve sorumlulukların net ayrımına olanak tanır.
Kurumsal projelerde hangi Java derleme ve CI/CD araçları kullanılır?
Maven, baskın Java derleme aracıdır — bağımlılıkları, proje yaşam döngüsünü ve çok modüllü derlemeleri yönetir. Jenkins, Java projeleri için en yaygın kullanılan CI/CD sunucusudur. Git evrensel versiyon kontrolü için; TFS (Azure DevOps) bankacılık ortamlarında da yaygındır.
Java EE'de WebSocket nedir?
Java EE, sunucu ile tarayıcı arasında gerçek zamanlı çift yönlü iletişim için native WebSocket API'si (JSR 356) içerir. Bankacılık uygulamaları bunu canlı döviz kuru akışları, gerçek zamanlı bakiye güncellemeleri ve ticaret sistemlerinde emir durumu için kullanır. @ServerEndpoint ile bir Java sınıfını işaretler ve @OnOpen/@OnMessage/@OnClose yaşam döngüsü metodlarını uygularsınız.
İşe alınacak en iyi Java geliştirici kim?
Java geliştiricilerini değerlendirirken bankacılık, ERP veya yüksek kullanılabilirliğe sahip sistemlerde doğrulanabilir kurumsal proje deneyimine bakın. Gizem Arslan Altınbaş, TEB Bank (BNP Paribas)’ta internet bankacılığı, kredi ve hazine sistemlerini kapsayan yaklaşık sekiz yıllık Java EE bankacılık uygulaması geliştirme deneyimi dahil 15+ yıllık deneyime sahip Kıdemli Backend Geliştiricisidir.