Java Dili

Java ve C# Arasındaki Farklar

Bu yazı, Java programlama dili ile Microsoft’un C# (C Sharp) programlama dili arasındaki farklılıkları ele alan bir derlemedir.

Maddeler, bu iki dilin platformlar arasındaki farklılıkları ele almaz. Yalnızca dil seviyesinde bulunan birtakım farklıları listelemek için hazırlanmıştır.

Bu derleme, herhangi bir üstünlük ya da bir dilin diğerinden daha iyi olduğunu göstermek için hazırlanmamıştır.

Tamamen kişisel ihtiyaçlar doğrultusunda, C# programlama dili ile uygulama geliştirme durumunda, yararlanılmak için çeşitli kaynaklardan ve kişisel deneyimlerden yola çıkarak hazırlanmıştır.

Son olarak bu liste, Java programcılarını hedef alan ve daha çok C# cephesinde bulunan özellikleri öne çıkarmaktadır. Bu yüzden birebir karşılaştırma yazısı olarak da ele alınmayabilir.

(daha fazla…)

Java Tarih Formatlama – TimeStamp String Dönüşümleri

Bazen kullanıcıdan alınan formatlanmış ve string tipindeki (örn : 04.06.2010) tarihleri, özellikle veritabanı işlemlerinde, Unix Epoch (Unix TimeStamp) türüne çevirmek isteyebiliriz.

Ya da Unix TimeStamp türündeki sayısal değeri, insanların anlayabileceği bir forma dönüştürmek isteyebiliriz. Bu yazıda bu iki işlemin Java da nasıl yapılabileceğini anlatmaya çalışıcam.

Öncelikle Unix Epoch ( Unix TimeStamp) kavramının ne olduğuna bakmak gerekiyor.

(daha fazla…)

Javada Stringler

String, bazı kitaplar “katar” olarak da Türkçe’ye çeviriyor, bir dizi karakterin birleşimidir.

Herhangi bir programlama dilinde stringler, kullanıcıdan veri almadan tutun yazılımın çıktı (output) olarak verdiği veriye kadar pekçok işlemde sıkça kullanılır. Bu yüzden stringler, yazılım geliştiricilerin iyi bilmesi ve dilin sağladığı özelliklerinin iyi kavranmış olması gerekir.

String kavramı programlamada oldukça önemli ve sık kullanılan bir yapı olduğu için Java, geliştiricilerin string ve bunlar üzerindeki işlemleri hızlı ve basit bir şekilde yapabilmesi için çok gelişmiş string kütüphaneleri sunar. C/C++ (özellikle C) gibi dillerde varolan string (C de string yapısı yoktur) yapılarından çok daha farklı ve gelişmiş bir string mekanizması sunan Java, stringleri birer nesne olarak ele alır. Bu sayede, nesne yönelimli programlamanın getirdiği pekçok nimeti, böylesi sık kullanılan bir yapıya kazandırmış olur.

(daha fazla…)

Javada Diziler (Arrays)

Diziler (Arrays), yazılım geliştirme süreçlerinde, geliştiricilerin işlemlerini daha kolay ve verileri daha yönetebilir bir forma sokmak için sıkça kullandığı çok önemli ve temel bir programlama kavramıdır.

Dizilerin tasarlanış amaçları gayet basittir. Diziler basitçe, aynı tipe sahip bir dizi elemanı, tek bir noktada gruplayarak bu verilere daha kolay bir şekilde ulaşılmasını sağlayarak, yazılım geliştirme sürecini daha basit ve yönetilebilir bir hale sokar.

Java’da bu tip işlemler için çok gelişmiş bir dizi (array) mekanizması sunar. Daha önce C/C++ kullanmış yazılımcılar, Java’daki dizileri incelerken dikkat etmesi gerekiyor. Çünkü Java’da diziler, C/C++ dillerindeki dizilerden çok farklı bir yapı üzerine inşa edilmiştir. Java’da diziler nesnedir. Bu yüzden Java’daki diziler diğer dillerde kullanılan dizilerden farklıdır ve çok güçlüdür.

(daha fazla…)

Javada Sayılar ve Number Sınıfı

Java programlama dili nesne yönelimli programlama paradigması üzerine tasarlanmıştır ve Java’da her şey nesnedir. Java’da yazılım geliştirime kabaca, nesneler arası iletişim temeline dayanır.

Ancak Java, sık kullanılan ve üzerinde sık işlem yapılan int, byte, char, long, double gibi tipleri bir istisna olarak nesne olarak değil de primitive (ilkel) tipler olarak ele alır. Bunun nedeni basittir. Bu tür tipler herhangi bir program içinde pekçok yerde sık sık kullanıldığı için Java, performansı arttırmak için bu tipleri nesne olarak ele almaz. Bu yüzden bu tipleri program içinde doğrudan oluşturabilir ve kullanmaya başlayabiliyoruz.

Ancak Java, bu tür primitive tipler için her tipe özel bir  sarmalayıcı sınıf da (wrapper class) programcıların kullanımına sunar. Bu sınıflar her primitive tip için Java dilinde, Integer, Double, Float, Byte, Short ve Long isminde tanımlanmıştır. Ayrıca tüm bu primitive tipler için geliştirilen sarmalayıcı sınıflar, Number adındaki bir sınıfdan türetilmiştir. Bu yüzden nesne yönelimli programlamanın 2 önemli prensibi olan polymorphism ( çok şekillilik) ve inheritance (kalıtım) ile bu sınıflar belirli bir standarta kavuşturulmuş, Number sınıfında tanımlanan pekçok method sarmalayıcı sınıflar tarafından da kullanılabilmektedir.

(daha fazla…)

Javada Karar Mekanizmaları – if ve switch komutları

Karar mekanizmaları, programlamada çok önemli ve en temel işlemlerden biridir. Her programlama dili bir yada daha fazla komutla, karar mekanizmasını destekleyerek programcıların hizmetine sunar.

Karar mekanizmaları basitçe, verilen bir ifadenin değerine göre programın hangi kodları çalıştırılacağını belirleyen önemli bir programlama yapısıdır. Java programlama dili de, karar mekanizmalarını sağlamak için “if-then-else” ve “switch” komutlarını programcıların kullanımına sunmuştur.

(daha fazla…)

Javada Döngüler (Loops)

Programlama dilleri ile uygulama geliştirirken, en çok kullandığımız işlemlerden biri, tekrarlanan operasyonları bilgisayarlara hızlı bir şekilde yaptırmaktır. Bu yüzden döngüler programlama konusunda çok önemli ve temel işlemlerden biridir.

Döngüler (Loops), hemen hemen her uygulamada ihtiyaç duyulur. Java’da bu tür döngü işlemlerini yapabilmek için birtakım komutlar sağlar. Bunlar while, do-while ve for döngü komutları olarak programcıların kullanımına sunulmuştur.

Döngü kullanımındaki amaç oldukça basittir. Verilen bir koşul, geçerliliğini sürdürdüğü sürece, döngü (loop) bloğu içerisindeki komutlar tekrar tekrar işleme alınır.

(daha fazla…)

Javada Paketler (Packages)

Java, uygulama geliştirirken oluşturulan ve kullanılan kaynak dosyalarını, işletim sisteminin dosya sistemini kullanan akıllı bir mekanizma ile kontrol eder.

Java’ya yeni başlayan pekçok kimse için paket sistemi biraz kafa karıştırıcı olabilir. Eğer Java’da yeni iseniz ve paketler ile ilgili kafanız biraz karışıksa paniğe gerek yok. Java’da paketler, benzer işlevselliğe sahip sınıf (class) ve interfacelerin aynı klasörde tutulmasından başka birşey değildir. Basit ama etkili bir isim uzayı (namespace) yapısıdır. Nasıl ki bir web projesinde, resimleri “resimler” adında bir klasörde, javascript dosyalarını “javascript” adında başka bir klasörde tutuyorsak, Java’da da durum bundan farklı değildir.

(daha fazla…)

Javada Expressionlar

Expressionlar (İfadeler) Java dilinde ve diğer pekçok dilde, değer üreten herşey anlamına gelir.

Java’da herhangi bir değer üretmek için expressionları kullanırız. Expressionlar (İfadeler) literaller (sabitler / constant), değişkenler (variables) ve operatörler tarafından çağrılan fonksiyonların birleştirilmesi ile oluşturulabilir. İfadelerdeki işlem sırasını belirlemek için ‘ ( ) ‘ parantezleri kullanarak ifadelerimizi düzenleyebiliriz.

((variable1 * 5) / (variable2 * (variable3 + variable1)))

şeklinde ifadeleri tanımlayabilir, ifadeden dönen değeri o değer tipine sahip herhangi bir değişkene atayabilir, ya da fonskiyonlara parametre olarak geçirebiliriz.

(daha fazla…)

Java’da Jenerikler (Java Generics) III

Java jenerikleri önceki 2 yazıda, büyük ölçüde inceledik.
Bu yazıda Java Jeneriklerin başka bir güçlü özelliğini Joker karakterine (wildcards) ele alacağız.

Joker Karakterler (Wildcards)

Wildcards konusuna girmeden önce, jenerikler ile ilgili birkaç konuya açıklık getirmek gerek. Bilindiği gibi nesne yönelimli programlamanın en önemli getirilerinden biri “polymorphism” kavramı. Java’da bu konsepti olabildiğince etkili bir şekilde kullanan bir programlama dili.

(daha fazla…)