Hoşgeldin Misafir

Java ile WhatsApp Benzeri Chat Uygulaması Nasıl Yapılır?

müminbiri

müminbiri

Ne kadar sessiz olursan, o kadar çok işitebilirsin
13 Ağu 2025
1,329 Mesaj
TIM Görevleri
1

Aktiflik

Seviye

Deneyim

TIM / GÖREV:

Merhabalar ben yues25 Lojistik grup adına paylaşılan Java ile WhatsApp Benzeri Chat Uygulaması Nasıl Yapılır? adlı makalesinde sizi görmekten mutluyum.


Java ile WhatsApp Benzeri Chat Uygulaması Nasıl Yapılır?

Mesajlaşma uygulamaları günümüzde en çok kullanılan yazılımlar arasında yer alıyor. Ben de gerçek zamanlı iletişim sistemlerini daha iyi anlamak ve ağ programlama konusunda kendimi geliştirmek için Java kullanarak WhatsApp benzeri bir chat uygulaması geliştirdim. Bu süreçte hem istemci-sunucu mimarisini hem de gerçek zamanlı veri iletişimini yakından deneyimleme fırsatı buldum.

Bu yazıda, Java ile WhatsApp mantığında çalışan temel bir chat uygulamasının nasıl geliştirilebileceğini adım adım anlatacağım.

Projenin Amacı

Amacım kullanıcıların birbirleriyle anlık olarak mesajlaşabildiği, giriş yapabildiği ve mesajların karşı tarafa gecikmeden iletildiği bir sistem oluşturmaktı. Gerçek bir WhatsApp uygulamasında sesli görüşme, görüntülü konuşma, durum paylaşımı gibi birçok özellik bulunuyor. Ancak temel mantığı anlamak için öncelikle mesajlaşma altyapısına odaklandım.

Kullanılan Teknolojiler

Projeyi geliştirirken aşağıdaki teknolojilerden yararlandım:

  • Java
  • Socket Programlama
  • Multi-threading
  • Java Swing (Arayüz Tasarımı)
  • MySQL Veritabanı
  • JDBC
Bu teknolojiler sayesinde hem kullanıcı arayüzünü hem de sunucu tarafındaki mesajlaşma sistemini oluşturabildim.

Sistem Mimarisi

Uygulamanın temelinde istemci-sunucu (Client-Server) mimarisi bulunuyor.

Sunucu tarafı tüm kullanıcı bağlantılarını yönetiyor. Bir kullanıcı mesaj gönderdiğinde mesaj önce sunucuya ulaşıyor, ardından hedef kullanıcıya aktarılıyor.

Sistem şu şekilde çalışıyor:

  1. Kullanıcı uygulamaya giriş yapıyor.
  2. Sunucuya bağlantı kuruluyor.
  3. Kullanıcı mesaj gönderiyor.
  4. Mesaj sunucuya iletiliyor.
  5. Sunucu mesajı ilgili kullanıcıya yönlendiriyor.
  6. Alıcı kullanıcı mesajı anlık olarak görüyor.
Bu yapı sayesinde kullanıcılar arasında gerçek zamanlı iletişim sağlanabiliyor.

Socket Yapısının Kullanımı

Java'da gerçek zamanlı haberleşmenin temelini Socket yapısı oluşturuyor.

Sunucu tarafında ServerSocket kullanarak belirli bir port üzerinden bağlantıları dinledim. Kullanıcı uygulaması açıldığında ise Socket sınıfı ile sunucuya bağlandım.

Her yeni bağlantı için ayrı bir Thread oluşturarak aynı anda birden fazla kullanıcının sisteme bağlanabilmesini sağladım. Bu yöntem sayesinde uygulama çoklu kullanıcı desteği kazanmış oldu.

Kullanıcı Giriş Sistemi

Mesajlaşma uygulamalarında kullanıcı doğrulama oldukça önemlidir. Bu nedenle kullanıcı bilgilerini MySQL veritabanında sakladım.

Kullanıcı kayıt olurken:

  • Kullanıcı adı
  • E-posta
  • Şifre
bilgileri veritabanına kaydediliyor.

Giriş işlemi sırasında girilen bilgiler veritabanındaki kayıtlarla karşılaştırılıyor. Bilgiler doğruysa kullanıcı sisteme giriş yapabiliyor.

Mesajların Veritabanında Saklanması

Gerçek mesajlaşma uygulamalarında konuşma geçmişi oldukça önemlidir. Bu nedenle gönderilen mesajları da veritabanında sakladım.

Mesaj tablosunda şu bilgiler yer alıyor:

  • Gönderen kullanıcı
  • Alıcı kullanıcı
  • Mesaj içeriği
  • Gönderim tarihi
  • Okunma durumu
Böylece kullanıcı uygulamayı kapatıp tekrar açtığında eski konuşmalarını görüntüleyebiliyor.

Kullanıcı Arayüzü Tasarımı

Arayüz tarafında Java Swing kullandım. Basit ama kullanışlı bir ekran oluşturmayı hedefledim.

Arayüzde:

  • Kullanıcı listesi
  • Sohbet ekranı
  • Mesaj yazma alanı
  • Gönder butonu
yer alıyor.

Mesaj gönderildiğinde ekran anlık olarak güncelleniyor ve yeni mesaj sohbet penceresinde görüntüleniyor.

Gerçek Zamanlı Mesajlaşma

WhatsApp benzeri uygulamaların en önemli özelliği mesajların anlık iletilmesidir.

Bunu sağlamak için her kullanıcı bağlantısını sürekli dinleyen ayrı Thread'ler kullandım. Sunucu tarafı yeni mesaj geldiğinde ilgili kullanıcıya anında bildirim gönderiyor.

Bu yöntem sayesinde sayfa yenilemeye gerek kalmadan gerçek zamanlı iletişim sağlanabiliyor.

Güvenlik Konuları

Mesajlaşma uygulamalarında güvenlik göz ardı edilmemesi gereken bir konudur.

Projeyi geliştirirken şu önlemleri almaya çalıştım:

  • Şifrelerin hashlenerek saklanması
  • SQL Injection saldırılarına karşı PreparedStatement kullanılması
  • Kullanıcı oturumlarının kontrol edilmesi
  • Yetkisiz erişimlerin engellenmesi
Profesyonel projelerde bunlara ek olarak SSL/TLS şifreleme ve uçtan uca şifreleme gibi yöntemlerin de uygulanması gerekir.

Geliştirilebilecek Özellikler

Temel sistem tamamlandıktan sonra aşağıdaki özellikler eklenebilir:

  • Grup sohbetleri
  • Sesli mesaj gönderme
  • Dosya paylaşımı
  • Görüldü bilgisi
  • Çevrimiçi kullanıcı takibi
  • Push bildirim sistemi
  • Görüntülü görüşme desteği
Bu özellikler uygulamayı gerçek bir mesajlaşma platformuna daha da yaklaştıracaktır.

Sonuç;

Java ile WhatsApp benzeri bir chat uygulaması geliştirmek, ağ programlama ve gerçek zamanlı sistemlerin çalışma mantığını öğrenmek açısından oldukça faydalı bir deneyim oldu. Socket programlama, çoklu iş parçacığı kullanımı ve veritabanı entegrasyonu gibi konuların bir arada kullanılması sayesinde kapsamlı bir proje ortaya çıktı.

Özellikle Java öğrenen geliştiriciler için bu tarz projeler, teorik bilgilerin pratiğe dönüştürülmesi açısından önemli bir fırsat sunuyor. Temel mesajlaşma sistemi oluşturulduktan sonra yeni özellikler eklenerek proje çok daha profesyonel bir seviyeye taşınabiliyor.


Makalemi okuduğunuz için teşekkür ediyorum. Yorum yapmayı ve beğenmeyi unutmayın.


LOJİSTİK TİM SUNDU

14.png