instagram twitter linkedin github youtube

30.7.19

Java Paketleri

Java kütüphanesinde çok sayıda metot ve değişken tanımları vardır. Metotların ve değişkenlerin her biri  bir sınıf içindedir. Metotları ve değişkenleri içeren sınıfların sayıları da çok fazladır. Erişimi kolaylaştırmak için sınıflar gruplara ayrılmışlardır. Birbirleriyle ya da aynı konuyla ilişkili olan sınıflar bir grup içinde toplanır. Bu grupların her birine bir paket (package) diyoruz. Başka bir deyişle, bir paket birbirleriyle ilişkili sınıfları içeren bir ambardır (dizin). Örneğin giriş/çıkış ile ilgili olan bütün sınıflar java.io paketi içindedir. Bir pakette aynı adı taşıyan iki sınıf olamaz. Ama farklı paketler içinde aynı adı taşıyan sınıflar olabilir. Paket adları sınıfların karışmasını önler.

İleride programlarımızın sayısı arttıkça, sınıf adlarının birbirleriyle karışmasını önlemek için birbirleriyle ilgili sınıfları aynı pakete koymayı öğreneceksiniz.

Bütün Java paketlerini

http://www.oracle.com/technetwork/java/javase/documentation/api-jsp-136079.html

web adresinden görebilirsiniz. Burada çok kullanacağımız birkaç tanesini kısaca açıklamakla yetineceğiz.

java.lang  Paketi
Java sınıf paketleri arasında en önemlilerinden birisidir. import deyimi yazmaya gerek kalmaksızın, her java programına kendiliğinden (automatic) girer. Java dilinin özünü oluşturan sınıfları içerir.

java.io  Paketi
Giriş-çıkış işlemlerini yapan sınıfları içerir.

Bir program koşarken, sistemin dış çevre birimlerinden veri alması ya da onlara veri göndermesi gerekebilir. Kullanıcının bilgisayarla etkileşim içinde olabilmesi için, onunla iletişim kurabilmelidir. Bunun tek yolu, bilgisayara girdi (input) göndermek ve ondan çıktı (output) almaktır. Hemen her dil bu iş için çeşitli yöntemlere sahiptir. Giriş/çıkış birimleri dediğimiz birimler bu işe yarar. Örneğin, klavye, dosya, uzaktaki bilgisayar, ağ gibi araçlar bilgisayara girdi yapabilirler. Ekran, yazıcı, dosya, ses-aygıtları, ağ gibi araçlarla bilgisayardan çıktı alınabilir. Her gün sayısı ve niteliği değişen bu giriş-çıkış aygıtlarını kullanmakta Java çok hünerlidir. Onları ilerideki derslerde yeri geldikçe ele alacağız. Ama ilk derslerde çok kullanacağımız bazı  kavramları tanımamız gerekiyor.

Bu paketin içerdiği iki önemli sınıf

InputStream

OutputStream

sınıflarıdır. Stream (akım) sözcüğü sisteme giren ya da sistemdan çıkan karakter dizileridir. Bütün veriler birer karakter dizisi olarak sisteme girer veya sistemden çıkarlar. InputStream sınıfı girişleri, OutputStream sınıfı çıkışları düzenler. 

Her türlü giriş-çıkış işlemlerinin yapılabilmesi için, her iki sınıfın alt sınıfları ve onların çok sayıda metotları tanımlıdır. Bazılarını bu ders boyunca kullanacağız.


OutputStream Sınıfının alt sınıfları



InputStream Sınıfının alt sınıfları



System Sınıfı

java.lang
Class System
java.lang.Object
  extended by java.lang.System


standard output,

standard error,

standard input

akımlarını yönetir. Başka bir deyişle, standart giriş-çıkış işlemlerini yapan ve hata iletilerini veren bir sınıftır. Genel olarak, sistemin dışarıyla olan ilişkilerini yönetir. Çevre değişkenlerine erişir, veri ve dosya girdi-çıktısından sorumludur. Bunları yapabilmesi için, java.io paketi içindeki InputStream ve OutputStream sınıflarını kullanır (implement).

G/Ç  Akım yolları (I/O streams)

Bir java uygulaması başladığında, Sytem sınıfı kendiliğinden şu üç giriş/çıkış akım-yolunu açar:

in

out

error

Kullanacağımız Windows işletim sisteminde standart giriş yolu klavye, standart çıkış yolu ekrandır. İstenirse bunlar değiştirilebilir. Örneğin klavyeden giriş yerine bir dosyadan giriş yapılabilir. Benzer olarak, ekran yerine  yazıcıya veya bir dosyaya çıkış yapılabilir.  Ama biz bu ders boyunca standart giriş birimi olarak klavyeyi, standart çıkış birimi olarak ekranı kullanacağız. Giriş in, çıkış out ve hata error  akım-yollarıyla temsil edilir. Bunlar System sınıfında girdi, çıktı ve hata 'yı tutan değişkenlerdir. Bu değişkenlere nesne yönelimli programlama dillerinde, değişken demek yerine, gendeğer (property) denilir. Bazı kaynaklar “özellik” sözcüğünü kullanır. Bu kitapta gendeğer sözcüğünü tercih edeceğiz.

Yukarıdaki üç gendeğerin değerlerinin nasıl oluştuğunun ayrıntısına girmeden, konuyu basitleştirmek için şunu söyleyebiliriz. Bir java uygulaması başlayınca, kullanıcının klavye ile yazdıkları in akım-yoluna atanan değerdir. Sistem bu girdiyi algılar. Sistemin çıktıları out akım-yoluna atanan değerdir. O değer ekrana yazılır ve kullanıcıya iletilmiş olur. Bu işlemler sırasında bir hata oluşursa, o hata error akım-yoluna atanır ve  otomatik olarak ekrana yazılır.

Girdi/Çıktı için Metotlar

Java dilinde girdi/çıktı işlemleri için InputStream ve OutputStream sınıflarının alt sınıflarına ait olan aşağıdaki  metotları (fonksiyon)  çok kullanacağız. O nedenle, onlar hakkında basit temel bilgileri edinmemiz gerekiyor.

Nesne Yönelimli Programlama dillerinde, fonksiyon kavramı matematikteki fonksiyon kavramından biraz daha geneldir. O nedenle, fonksiyon terimi yerine metot terimi kullanılır.

print()

java.io -> OutputStream -> FilterOutputStream -> PrintStream alt sınıfı içinde bir metottur (fonksiyon). Standart çıkışa (ekran) çıktı gönderir. Sözdizimi şöyledir:

System.out.print(parametre);

println()

PrintStream alt sınıfı içinde bir metottur (fonksiyon). print() metodu ile aynı işi yapar, ancak çıktıyı gönderdikten sonra ayrıca satırbaşı yapar (\r\n). Sözdizimi:

System.out.println(parametre);

printf()

PrintStream alt sınıfı içinde bir metottur (fonksiyon). Konsola biçemli (formatlı) çıktı gönderir.

System.out.printf(parametre);

Write()

PrintStream alt sınıfı içinde bir metottur (fonksiyon). Standart çıkışa (ekran) çıktı gönderir. Sözdizimi:

System.out.Write(parametre);

Bu metot parametre olarak Java dilindeki her veri tipini kabul eder.

Read()

InputStream sınıfı içinde bir metottur . Kalıtım özeliği nedeniyle, bütn alt sınıfları bu metoda sahiptir. Byte (karakter) ya da byte arraylaerini farklı giriş birimlerinden okur. İleride bu metodu daha ayrıntılı inceleyeceğiz.

Parametre

public int f(int x; double y)

{

     int a;

     double b;

     …

}

Yukarıdaki f metodunda () parantezi içindeki değişkenlere parametre {} gövdesi içindekilere yerel değişken denilir. Bunun nedeni, fonksiyonun bağlı olduğu değişkenleri öteki yerel değişkenlerden ayırmak içindir. Matematikte f(x,y) fonksiyonu için x, y değişkenleri ne anlam taşıyorsa, bilgisayar fonksiyonları için parametreler aynı anlamı taşır.

java.text
Metinleri işleyen sınıflardan oluşur. Farklı dil ve kültürlere göre tarih, sayı ve iletilerin yazılmasını sağlar.

java.math
Duyarlı matematiksel işlemler yapmak için gerekli  sınıfları içerir. Matematikte kullanılan standart fonksiyonların hepsini bu sınıfta bulabilirsiniz.

java.awt
Kullanıcı arayüzü (UI-user interface) tasarımı ve olay-yönlendirici (event-handler) için gerekli standart öğeleri içerir.

javax
Java dilinin genişlemesini sağlayan sınıfları içerir.

java.applet
Java appletleri yaratmak için gerekli sınıfları içerir.

java.beans
Java bean’leri yaratmak için gerekli sınıfları içerir.

java.sql, javax.sql
JDBC API yardımıyla veri tabanlarına erişimini ve veri işlemeyi sağlayan sınıfları içerirler.

java.rmi
Java bean’leri yaratmak için gerekli sınıfları içerir.

java.net
Ağ (network) uygulamaları yaratmak için gerekli sınıfları içerir.

java.security
Kriptografik güvenlik için gerekli sınıfları içerir.

Program Yazmaya Giriş

Programlamaya yeni başlayanlar için, öğrenmenin en iyi yolu kitaplarda yazılan küçük programları usanmadan yazmak, derlemek ve çalıştırmaktır. Bu küçücük programlar, bilgisayarın yapabileceği bütün işleri size öğretecektir. Unutmayınız ki, büyük programlar bu küçücük programların birleşmesiyle oluşur. O nedenle, bu derste yazılacak küçük programların, programlamayı öğrenmenin biricik yolu olduğunu aklınızdan çıkarmayınız. Burada izlenecek aşamaların herhangi birisinde yapılacak yanlışlar, öğrenciyi bıktırmamalıdır. Aksine, programlamayı çoğunlukla yaptığımız yanlışlardan öğreniriz. O nedenle, yanlış yapmaktan korkmayınız. Üstelik yeni bir şey öğrenirken bilerek yanlışlar yapıp onun doğurduğu sonuçları görmek eğlenceli ve öğretici olabilir.

Bilgisayarınızda  JSDK’ nın  kurulu olduğunu varsayıyoruz. Bunu kurmak istemeyenler Java derleyicisi ile de yetinebilirler. Biz bu derste Java JSDK’nın kurulduğunu ve gerekli konfigürasyonların yapıldığını varsayıyoruz. Eğer bu işler yapılmamışsa, önce kurulum işlemlerini yapmalısınız. Kurulumun nasıl yapılacağı ilgili web sayfalarından görülebilir. Windows İşletim Sisteminde JSDK kurulumu için Birinci Bölüme bakınız.

İlerleyen haftalarda Eclipse, Netbeans, vb. bir bütünleşik uygulama geliştirme aracı (IDE- Integrated Development Environment) kullanmaya başlayacağız. Bu tür araçların uygulama geliştirmede ne kadar yararlı ve kolay kullanılır olduğunu göreceksiniz. Ama bu tür bir aracı hemen kullanmaya başlamak, binanın tepesine asansörle çıkmak gibidir. Aşağı katlarda ne olup bittiğini anlamak için, en aşağıdan başlayıp medivenleri adım adım çıkmalıyız. Başlangıçta atacağımız bu zahmetli adımlar, kaynak programın yürütülebilir bir programa nasıl dönüştüğünü anlamamızı sağlayacaktır.

O nedenle, ilk derslerde hiçbir görsel arayüz kullanmadan, işlerimizi doğrudan doğruya işletim sisteminin komutlarıyla göreceğiz. Böyle yapabilmek için, Windows’un Komut İstemi kipini açacak ve DOS (Disk Operating System) komutları yazacağız. Windows 7 İşletim sisteminde Komut İstemi’ni aşağıdaki iki yoldan birisiyle açabilirsiniz:

Başlat -> Çalıştır  sekmelerine basınca açılan pencerede Search Programs and Files: -----   kutucuğuna  cmd  yazıp  entere basınız.

Başlat -> Tüm Programlar -> Donatılar sekmelerinden sonra açılan alt pencereden Komut İstemi (Command Prompt) sekmesine tıklayınız.

Windows’un farklı sürümleri için de benzer işler yapılabilir. Yukarıdakilerden birisini yaptığınız zaman, ekranda siyah zemin üzerine beyaz yazılar yazılan Komut İstemi (Command Prompt) penceresinin açıldığını göreceksiniz. Bu pencereye istediğiniz dos komutunu yazabilir ya da yürütülebilir (executable) herhangi bir programı çalıştırabilirsiniz.

Şimdi yazdığımız programları içine kaydedeceğimiz bir dizin yaratalım. İstediğiniz sürücüde istediğiniz adla bir dizin ya da alt dizin yaratıp Java programlarınızı oraya kaydedebilirsiniz. Programlarımızı C: sürücüsünde yaratacağımız jprg dizini içine kaydetmek isteyelim. Bunun için şu komutları yazacağız:

md C:\jprg

cd C:\jprg

Bunlardan birincisi olan md (make directory) komutu istediğimiz dizini yaratır. İkincisi olan cd (change directory) komutu ise o dizini etkin kılar. Basit bir deyişle, sistemin yazma/okuma kafası o dizin içine girer ve orada yazabilir ve okuyabilir. Dizine girdiğimizi, Komut İstemi ekranında beliren

C:\jprg>

görüngesinden anlarız.  Bu simgeler daima Komut İstemi penceresinde görünecektir; etkin olan dizini gösterir. Dos komutlarını  c:\jprg>  etkin (prompt) simgesinden hemen sonra yazacağız. Şimdi program yazmamıza yardım edecek basit bir editör açalım. Komut İstemi penceresinde edit yazıp Enter tuşuna basınız:

edit

Eğer editör penceresi açılmazsa, sisteminiz edit.com  dosyasını görecek biçimde ayarlı değildir. Bunu PATH çevre değişkeni ile ayarlayabilirsiniz. Ama, şimdi zaman kaybetmemek için, edit.com  dosyasının bulunduğu adresi tam yazarak, editörü açabiliriz:

C:\WINDOWS\system32\edit

Açılan editörde aşağıdaki programı yazıp Dosya sekmesinden Farklı Kaydet seçeneğine basınız. Açılan alt pencerede Dosya Adı yerine Program001.java yazıp Enter tuşuna basınız. İsterseniz yazma ve kaydetme işini Notepad ile de yapabilirsiniz.

Program001.java

class Program001

{

}



İpucu

Java kaynak programlarının dosya adlarının uzantısı .java olmalıdır.

Programa verilen dosya adı ile programda tanımlanan class adı aynı olmalıdır.

Tabii, bir programda birden çok class olabilir. Burada söylenen şey, programdaki iç sınıfların hepsini içeren en dıştaki class’ın adı ile dosya adının aynı olması gereğidir. Bunun nasıl yapıldığını ilerideki örneklerimizde daima göreceğiz.

Java  nesne yönelimli bir dil olduğu için, hemen her şey sınıflar (class) içine yazılır. Programda kullanacağımız değişkenler ve metotlar mutlaka bir ya da birden çok sınıf  içinde tanımlanmalıdır. Bunların nasıl olacağı, bu dersin asıl konusudur ve onları adım adım öğreneceğiz.

Yukarıda yazdığımız Program001.java dosyası için tanımlanan Program001 sınıfının içi boştur. Dolayısıyla, bu sınıfın hiçbir iş yapmayacağı açıktır. Böyle olduğunu birazdan göreceğiz. javac.exe  derleyicisi ile programı derlemek için

javac Program001.java

yazıp Enter tuşuna basınız. Eğer sisteminiz  javac.exe  derleyicisini görmüyorsa, derleyicinin bulunduğu adresi yazabilirsiniz.

C:\jdk\bin\javac  Program001.java

Derleyici Program001.class adlı bytecode dosyasını yaratacaktır. (Bunu görmek için DOS kipinde dir komutunu çalıştırınız.)

Şimdi Program001.class dosyasını yorumlamak (yürütmek, icra) için java.exe yorumlayıcısını kullanacağız:

              java Program001

Yorumlayıcı bize aşağıdaki iletileri gönderecektir.

C:\jprg\src>javac Program001.java



C:\jprg\src>java Program001

Exception in thread "main" java.lang.NoClassDefFoundError: Program001

Caused by: java.lang.ClassNotFoundException: Program001

        at java.net.URLClassLoader$1.run(Unknown Source)

        at java.security.AccessController.doPrivileged(Native Method)

        at java.net.URLClassLoader.findClass(Unknown Source)

        at java.lang.ClassLoader.loadClass(Unknown Source)

        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

        at java.lang.ClassLoader.loadClass(Unknown Source)

Could not find the main class: Program001.  Program will exit.



C:\jprg\src>

Bu iletinin ilk satırı javac.exe derleyicisinin Program001.java dosyasının derlemesi için verdiğimiz komuttur. Derleyici bu komuta karşılık bir hata olduğu iletisi göndermemiştir. O halde Program001.class adlı bytecode dosyasının yaratıldığını anlayacağız.

İkinci satır java.exe yorumlayıcısının Program001.class bytecode’unun yorumlaması (yürütülmesi) için verilen komuttur. Bu komuttan sonra gelen iletiler, komutun yürütülemediğini ve yürütülemeyiş nedenlerini açıklayan satırlardır. 

Üçüncü satır, java.exe yorumlayıcısının programı yürütmek için gerekli olan main() metodunu bulamadığını söylüyor.

Programın yürütülemeyiş nedeni, üçüncü satırdaki ileti ile bildirilmektedir. Ondan sonraki satırları şimdilik düşünmeyiniz. Onlar, yorumlayıcının kendi iç işlevlerini ilgilendiren şeylerdir.

İpucu

Derleyici kaynak programda sözdizimi (syntax) hatası olduğunda programı derleyemez. Derleyici, derleyemediği her programda, sözdizimi yanlışlarını satır numarası yanında olası hatanın ne olduğunu yazarak bize iletir.  Bu iletiler, programın düzeltilmesinde (debug)  çok işe yararlar.

Ama, şimdilik bunları hiç düşünmeden, derleyicinin bizden istediği giriş noktasını oluşturmaya çalışalım.

Java uygulamaları bir main() metodu (fonksiyon) tarafından eyleme geçirilir. Programın yapacağı bütün işler bu main() metodu tarafından belirlenir. Buna programın giriş noktası diyoruz. Şimdi yukarıdaki programımıza  main() metodunu ekleyelim ve Program002.java adıyla kaydedelim.

Program002.java

class Program002

{

    public static void main(String[] args)

    {

    }

}

Sonra programı derleyelim:

javac Program002.java

Derleyicimiz gene hiç hata (error) iletisi göndermedi. Demek ki programı derledi ve yürütülebilir bytecode’a çevirdi. Gerçekten Dos kipinde

dir

komutu verirseniz, c:\jprg dizini içinde Program002.class adlı bytecode dosyasını göreceksiniz.  Bu dosyayı yorumlamak için

java Program002

komutunu yazmanız yetecektir. Bunu yazdığınızda, program çalışır, ama siz ekranda bir şey göremezsiniz. Çünkü, programın içine ekrana çıkacak bir şey yazmadık. Şimdi bunu yapalım.

İpucu

Bir dili öğrenirken işin pedagojisi ile sistematiği asla paralel gitmez. Bu nedenle, bazen pedagojiden bazen sistematikten ödün vermek gerekir. Böyle durumlarda, görünmez uzaylı dostumuz Uzay bize ipucu verecektir. Şimdilik Uzay’ın bize verdiği ipuçlarını kullanalım. Zamanla, onları daha iyi kavrayacağız.

İpucu

Ekrana bir şey yazdırmak için System.out.print() ya da System.out.println() metotları kullanılır. İkisi de aynı işi yapar, ancak birincisi isteneni yazdıktan sonra, yazdığı satırın sonunda bekler, ikincisi isteneni yazdıktan sonra satırbaşı yapar; yani alttaki satırın başına geçer.

Şimdi bu ipucuna göre programımızı düzeltelim.

Program003.java

    class Program003

    {

        public static void main(String[] args)

        {

            System.out.println("Merhaba Java! ")

        }

    }

Bu programı kaydettikten sonra derleyelim:

javac Program003.java

Bu kez, Komut istemi penceresinde şunu göreceğiz:



C:\jprg\src>javac Program003.java

Program003.java:5: ';' expected

            System.out.println("Merhaba Java! ")

                                               ^

1 error



Bu iletinin ikinci satırı kaynak programın 5-inci satırında hata olduğunu, hatanın ‘;’ simgesinin yokluğu olduğunu söyler. Üçüncü satırda ise hatanın yeri  (^) simgesi ile işaret edilmektedir.

İpucu

Java dilinde her deyimin sonuna  (;) konulur.

Derleyicinin hata iletisi kesinlikle kaynak programda bir hata olduğunun belirtir. Tabii her programcının yaptığı hatayı tam belirleyemeyebilir. Ama kaynak programdaki hatayı kategorik olarak bildirir ve yerini doğru işaret eder. O nedenle, hatayı işaret edilen yerde aramalıyız.

Şimdi eksik olan (;)  yazarak programımızı düzeltelim (bu işleme ‘debug’  denir).

Program004.java

    class Program004

    {

        public static void main(String[] args)

        {

            System.out.println("Merhaba Java! ");

        }

    }

Bu programı Program004.java  adıyla kaydedelim ve derleyelim:

javac Program004.java

Derleyicimiz başka bir hata iletisi göndermez. Öyleyse yorumlanabilir bytecode dosyasını yaratmıştır.

Gerçekten

dir

komutunu yazarsak, C:\jprg dizininde Program004.class  bytecode dosyasının yaratıldığını görebiliriz. Şimdi bu dosyayı koşturmak için,

Program004

yazıp Enter tuşuna basarsak, ekranda

Merhaba  Java!

yazısını göreceğiz.

Buraya kadar dört adımda ekrana ‘Merhaba Java!’  tümcesini yazdıran bir program yazdık. Bu bir tümce yerine bir roman ya da karmaşık matematiksel işlemlerden oluşan deyimler de olabilirdi. Uzun ya da kısa metinler veya basit ya da zor işlemler için yapacağımız iş hep budur. Bu biçimde yazacağımız küçük programlarla Java dilinin bütün hünerlerini öğreneceğiz. Büyük programların bu küçük programların uyumlu birleşmesinden oluştuğunu hiç aklımızdan çıkarmayalım.  O nedenle, bütünleşik bir uygulama geliştirme aracını (IDE) kullanmaya başlamadan, Java dilinin temellerini öğrenmeye devam edeceğiz.



Kaynak Programın Biçemi
Programlama dillerinde, belirli bir işi yapmak üzere yazılan sözdizimi (kod) parçasına deyim denir. Örneğin,

          System.out.println("Merhaba Java ");

bir deyimdir. Java dilinde bir deyimin bittiğini derleyiciye bildirmek için, o deyimin sonuna (;) konulur. Bir deyimdeki farklı sözcükler birbirlerinden en az bir boşluk karakteri ile ayrılır. Kaynak programda ardışık yazılan birden çok boşluk karakterleri tek boşluk olarak algılanır. Benzer olarak, tablar, satırbaşları ve boş satırlar birer boşluk karakteri olarak yorumlanır. Dolayısıyla, yukarıdaki programı

Program004a.java

class Program004a { public static void main(String[] args) {System.out.println("Merhaba Java! );}}

biçiminde ya da

Program004b.java

class

Program004b

{

Public static



void

main()



{

System.out.println("Merhaba Java! ");

}

}

biçiminde de yazabiliriz. Derleyici, kaynak programı derlerken birden çok tekrar eden boşluk karakterlerini, tab ve satırbaşlarını birer boşluk karakteri sayacaktır.

Buraya kadar Java diline ait bazı kavramları açıklamadan kullandık. Bu noktada basit açıklamalar yapmak yararlı olabilir.

Sınıf (class)
Sınıflar (class) Nesne Yönelimli Programlamanın (Object Oriented Programming) temel taşlarıdır. Programın kullanacağı her değişken, her deyim, her metot (fonksiyon) mutlaka bir sınıf içinde tanımlanmalıdır. Bir sınıf içinde tanımlanan metotlar (fonksiyonlar) ve değişkenler o sınıfın öğe'leridir (member). Karışmamaları için, bir sınıfta aynı adı taşıyan iki öğe olamaz (aşkın öğeler kavramını ileride göreceğiz).

Bloklar
Kaynak program bir ya da bir çok sınıftan oluşur. Sınıfların her biri bir bloktur. Bir sınıf içindeki her metot (fonksiyon) bir bloktur. Örneğin, yukarıdaki programın tamamından oluşan

class Program004

{

}



bir bloktur. Benzer olarak,



public static void main(String[] args)

{

}



metodu da bir bloktur. main(){ } bloku,  class Program004.java{ }  blokunun içindedir. Bu tür bloklara iç-içe bloklar diyoruz.  Bir blok içinde gerektiği kadar iç-içe bloklar oluşturabiliriz. Bir programda birden çok sınıf ve bir sınıf içinde birden çok blok olabilir. Bloklar, adına blok parantezleri diyeceğimiz { } simgeleri içine yazılır. Bazan main(){ } blokunda olduğu gibi blok parantezlerinin önüne blok adı gelebilir. Her sınıf (class) ve her alt sınıf bir bloktur. Bir sınıf içinde yer alan her metot (fonksiyon) bir bloktur. İleride göreceğimiz if, case ve döngü yapılarının her birisi bir bloktur. Bir sınıf içinde birbirlerinden bağımsız bloklar seçkisiz sırada alt-alta yazılabilir. Ancak iç-içe olan bloklar, istenen işlem sırasını izleyecek uygun sırayla iç-içe konur. İç-içe blok yazılırken, en içten dışa doğru blokun başladığı ve bittiği yerleri belirten blok parantezlerinin ({ }) birbirlerini karşılaması sağlanmalıdır. Bu yapılmazsa derleme hatası doğar. İç-içe bloklarda, işlem öncelikleri en içten en dışa doğru sıralanır.

Derleyici kaynak programın biçemine (format) değil, sözdizimine bakar. Ama kaynak programı hem kendimiz hem de başka programcılar için kolay okunur biçimde yazmak iyi bir alışkanlıktır. İç-içe giren blokları  birer tab içeriye almak, alt-alta yazılan bloklar arasına birer boş satır koymak, kaynak programın, programcı tarafından kolay okunup anlaşılmasını sağlar. Özellikle, uzun programlarda düzeltme (debug) ya da güncelleme (update) yaparken, kaynak programın yazılış biçemi işin kolay ya da zor yapılmasına neden olur.

Programa Açıklama Ekleme
Kaynak programımızın biçemi bilgisayar için değil, onu okuyan kişiler için önemlidir, demiştik. Büyük bir programın kaynağının kolay anlaşılır olmasını sağlamak programcının ahlâki sorumluluğundadır. Bunu sağlamak yalnızca programın biçemiyle olmaz. Büyük programlar için sınıfların, metotların, değişkenlerin işlevleri ayrıca açıklanmalıdır. Büyük yazılım firmaları programdaki her ayrıntıyı açıklayan döküman hazırlarlar. Böylece, yıllar sonra programcılar değişse bile, o dökümanlara bakılarak, kaynak program üzerinde değişiklikler, iyileştirmeler yapılabilir.

Java dilinde programa açıklama eklemek için iki yöntem kullanırız. Bu yöntemler C, C++ ve java gibi bir çok dilde de var olan yöntemlerdir.

Tek satır açıklaması
// simgesinden sonra satır sonuna kadar yazılanlar derleyici tarafından işlenmez. Bir satırın bütününü ya da bir satırın ortasından sonuna kadar olan kısmı açıklamaya koyabiliriz:

// Bu metot net ücretten gelir vergisini hesaplar

// System.out.println("Merhaba java!");

return netÜcret;   // metodun değeri netÜcret 'tir

Birincide satırın tamamı bir açıklamadır. Örneğin, gelir vergisi hesaplayan bir metodun başladığı satırdan önceki satıra konulabilir, böylece metodun ne iş yaptığı her okuyan tarafından anlaşılır.

İkincide, genellikle program yazarken bazı deyimlerin programa konulup konulmamasının etkisini görmek için, programcının sık sık başvurduğu bir yöntemdir. Bir deyimin başına  // simgelerini koyarak o deyimi derleyicinin görmesini engelleyebilirsiniz.

Üçüncüde, önce bir deyim yazılmış, deyimin bittiği yerde // simgesi konulmuştur. Derleyici deyimi görür ve işler, ama // simgesinden sonra satır sonuna kadar yazılanları görmez. Bu yöntemle, bir deyimin ne iş yaptığını kolayca açıklayabiliriz.

Çoklu satır açıklaması
Bazan yapacağımız açıklama tek satıra sığmayabilir. O zaman ardışık açıklama satırlarını /*   */  simgeleri arasına alırız.

/*

Bu sınıf 20 Ağustos 2008 tarihinde

Java  ile Nesne Programlama

kitabının Onikinci Bölümü için yazılmıştır.

*/

Bu yöntem çok satırlı açıklamalar için kullanıldığı gibi, program yazarken ardışık satırlardan oluşan bir blokun, bir metodun, bir sınıfın programda olup olmamasının etkisini görmek için programcının geçici olarak başvurduğu önemli bir araçtır.

Java nedir ?

Kodlamaya yeni başlayanlar için kısa dipnot : 

Bir programlama dilini öğrenmek, anadil öğrenmeye benzer. Çocukken, ana dilimizin sözdizimini (gramer) bilmeden, başkalarının yaptığı gibi kullanmaya başlarız; yani taklit ederiz. Ancak okula başladıktan sonra grameri adım adım öğreniriz. Bu derste genellikle bu yöntemi izleyeceğiz; yani Java dilini sistematik değil, pedagojik öğreneceğiz. Bir çok kavramı önce kullanacak, sonra onların esasını öğreneceğiz.

İlk bölümlerde söylenen kavramları esastan anlamanız beklenmiyor. Programların sözdizimlerinin (syntax -gramer) dayandığı temelleri iyi anlamasanız bile, bir çocuğun ana dilini öğrenmesi gibi, o kalıpları olduğu gibi kullanmaya çalışmalısınız. Yeni başlayanların bir dili öğrenmesinin en iyi yolu budur. Taklit etmek ve bolca tekrarlamak. Bu ders boyunca kavramları sık sık tekrarlayacağız ama her tekrarda o kavrama yeni bilgiler eklemiş olacağız.

Birinci Bölümde Nesne Yönelimli Programlama kavramına doğrudan girmek yerine, her programlama dilinde var olan ve programlamanın temelleri sayılan kavramlar, hiç programlama bilmeyenler için açıklanacaktır. Daha önce bir programlama dili öğrenmiş olanlar, bu bölümü okumadan atlayabilirler.

Java Programlama Dili


İlk bilgisayarlar ortaya çıktığında, şimdi kullandığımız FORTRAN, COBOL, Pascal, C/C++, Java gibi üst düzey diller yoktu. Farklı makinelerin donanım yapıları farklı olduğu için, farklı marka ve model bilgisayarların makine dilleri (makinelerin anladığı tek dil) birbirlerinden farklı idi. O nedenle, ilk programcılar, bilgisayara, ancak kullandıkları makinenin  makine dili ile iş yaptırabiliyorlardı. Makine dilini öğrenmek zor olmak yanında, bir makine için öğrenilen makine dili, farklı marka ve modeller için geçerli olmuyordu. Bu zorluğu aşmak için önce assembler dili ve hemen arkasından üst düzey diller ortaya çıktı. Üst düzey diller, programcılara büyük rahatlık getirdi. Çünkü, programcı, işletim sistemini ve makineyi düşünmeden, kaynak programını istediği dille yazabiliyordu. Örneğin, C ile yazılan bir kaynak programı, uygun derleyici ile her işletim sisteminde ve her makinede derlenip çalıştırılabiliyordu. [Tabii, C derleyicisi yazan farklı şirketlerin standarttan ufak sapmalarını göz ardı ediyoruz.]

Şimdi adına prosedürel diller denilen FORTRAN, COBOL, Pascal, Modula, C gibi üst düzey diller uzun yıllar programcılara başarıyla hizmet ettiler; halen de etmektedirler. Ama ortada bir problem vardı. Belirli bir işletim sistemi altında çalışan belirli tür bir makinede derlenen bir kaynak program, ancak o işletim sistemi altında çalışan o tür makinelerde koşturulabiliyordu. İşletim sistemi ve/veya makine türü değişince; yani platform değişince, program orada koşamıyordu; yeni platforma uygun bir derleyici ile yeniden derlenmesi gerekiyordu. Buna, kısaca platform bağımlılık diyoruz. Platform bağımlılıktan kastettiğimiz şey, bir kaynak programın belirli bir işletim sistemi altında çalışan belirli bir derleyici ile derlendiği ve ancak belirli bilgisayar türlerinde koşturulabildiği gerçeğidir. Örneğin, Windows işletim sistemi altında çalışan bir PC de derlenen bir bilgisayar programını  Macintosh ya da Linux işletim sistemi altında çalışan bir makinede koşturmak mümkün değildir.

Piyasaya farklı işletim sistemlerinin ve çok sayıda farklı donanımın çıkması, bilgisayar ağlarının gelişmesi, bir ağa bağlı makinelerin farklı işletim sistemleri altında çalışan farklı marka ve model bilgisayarlardan oluşuyor olması problemi büyüttü.

Problemin çözümü, platformdan bağımsız çalışabilecek bir dilin yaratılmasını gerektiriyordu. Bu iş, Sun firmasının geliştirdiği Java dili ile çözüldü. Gerçi Sun firması, ortaya çıkan bu büyük problemi çözmek için değil, daha basit bir amaçla yola çıktı. Elektrikli ev aletlerinin kolay kullanılmasını sağlayacak bir dil geliştirmek istiyordu. Kısa zamanda, bu işin ancak ortak bir platformda yapılabileceğini anladı. Sun’ın programcısı James Gosling, 1995 yılında her platformda çalışan Java dilini yarattı.

Gosling basit ama harika bir buluş yaptı. Farklı işletim sistemleri ve farklı donanımlarda kurulabilen ortak bir sanal makine tasarladı. Adına JVM (Java Virtual Machine) denilen bu sanal makine ücretsiz dağıtıldı. JVM her platforma kolayca kurulabilir. Java dili ile yazılan kaynak programlar, java derleyicisi ile JVM de çalışabilen bir tür makine diline dönüştürülür. Adına java byte kod denilen bu program JVM tarafından yorumlanır ve çalıştırılır. Java byte kod bir bakıma, prosedürel dillerde yazılıp derlenmiş kaynak programların işlevini yapar.

Java uygulamalarını çalıştırmak isteyen herkes, kendi makinesine JVM ‘i kurabilir. Bunun için JRE (Java Runtime Environment) adlı programı internetten indirip yüklemesi yetecektir. JRE bilgisayara bir kez yüklenir. Ondan sonra Java uygulamalarının hepsi bu makinede çalışabilir. Makinede bir java uygulaması çalışacağı zaman, JRE kendiliğinden JVM sanal makinesini oluşturur. JVM gerektiğinde çalışan bir programdır; her program gibi, işi bitince ana bellekten silinir. Dolayısıyla makineye bir zarar vermesi söz konusu değildir. Günümüzde, java uygulamaları ile karşılaşan tarayıcıların çoğu, JRE’yi otomatik olarak indirip yükleme yeteneğine sahiptir. 

Java basit, modern, nesne yönelimli, tip-korumalı ve C ile C++ dillerinin iyi özeliklerini almış bir dildir. Fazla olarak, her platformda çalışabilme yeteneğine sahiptir. Bu yetenek, onu yalnız bilgisayarlarda değil, internet uygulamalarına, cep telefonlarına, oyun makinelerine, ev aletlerine kadar geniş bir yelpazede uygulama alanı bulmasını sağladı. Bu nedenle, Java’yı hem programlama dili, hem de bir ortam olarak düşünebiliriz. Bu ortamda işletim sistemi, ağlar, internet programlama, veritabanı ve bütün orta katman (middleware) teknolojileri yer alır.



Özetle, Java basit bir dildir. Kolay öğrenilir. Genel amaçlı bir dilin bütün hünerlerine sahiptir. C, C++ dillerinin iyi özeliklerini almıştır. Kullanıcı dostu ve hızlı bir uygulama geliştirme  aracıdır.



Java dilinin başlıca nitelikleri


Java’nın kendi sitesinde Java’nın nitelikleri şu deyimlerle belirtiliyor:

·          Basittir

·          Mimari yapıdan bağımsızdır

·          Nesne Yönelimlidir

·          Taşınabilir

·          Dağıtıktır

·          Yüksek performansı vardır

·          Çoklu İş Yeteneği vardır

·          Sağlamdır

·          Dinamiktir

·          Güvenlidir

Biraz programlama bilenler bu deyimlerin ne anlama geldiğini kolayca sezebilirler. Bu kitap hiç programlama bilmeyenler için yazıldığına göre, yukarıdaki deyimleri biraz açıklamakta yarar olabilir. Yapılan açıklamaları şimdi anlamayanlar üzülmesinler, çünkü basitçe söylenen bu deyimler java dilinin özüdür. Onların gerçek anlamları ancak, kitabın tamamı okunduktan sonra iyice anlaşılabilecektir.



Java basittir. Java’yı tasarlayanlar kaynak programın kolay yazılabilmesini, kolay derlenmesini ve kolay düzeltilmesini (debug) amaçladılar. Java’nın C++ diline göre çok daha basit olmasının temel nedeni, otomatik bellek tahsisi yapması ve işi biten nesneleri bellekten yok etmesidir (garbage collection).

Java nesne yönelimli bir programlama dilidir. Nesne yönelimli programlama paradigmasının bütün avantajlarını taşır. Programcıya kalıtım, polimorfizm, modular programlama, hata ayıklama (debug) ve kodların yeniden kullanılabilmesi gibi önemli yetenekleri sunar.

Java dağıtık bir sistem olma niteliğine sahiptir. Bir ağ üzerindeki birden çok farklı bilgisayarın bütünleşik bir sistem olarak bir arada çalışmasını sağlar.

Java çoklu iş yapma (multithreaded) yeteneğine sahiptir. Çoklu iş yapma niteliği, bilgisayarın aynı anda birden çok işi yapabilmesi demektir. Başka dillerde sistemle ilgili prosedürlerin çağrılmasıyla yaptırılan multithreaded özeliği java dilinin özünde vardır. Multithreaded yeteneği, özellikle görsel programlamada ve ağ programlamada önem kazanır.

Java platform bağımsızdır. Java programları harklı platformlar için ayrı ayrı değil, JVM için bir kez derlenir. Derleme sonunda ortaya çıkan java bytecode JVM tarafından yorumlanır. Bytecode, JVM yüklü her makinede çalışabilir. JVM sanal makinesi her makineye kolayca ve ücretsiz yüklenebilir. Dolayısıyla, java programları bir kez yazılır ve her yerde çalışır.

Java taşınabilir. İşletim sisteminden ve donanımdan bağımsız oluşu nedeniyle, Java Bytecode bir bilgisayar sisteminden farklı bir başkasına kolayca taşınır. Aynı java  programının farklı sistemlerde sorunsuz çalışabilme yeteneği,  programlama alanında geniş ufuklar açmıştır.

Java sağlamdır. Başka dillerin ancak koşturma anında belirleyebileceği hataları, java  derleme anında belirler. Güçlü hata ayıklama (debug) yeteneği vardır.

Java güvenlidir. Java dili, derleyicisi ve yorumlayıcısı güvenlik öncelikli olarak tasarlanmıştır. Tasarımında güvenliği öne çıkaran ilk dildir.

Java Ağ dostudur. Java’da ağ programı yazmak, dosyalara veri gönderip veri almak kadar kolay bir iştir.



Java Dilinin Başlıca Uygulama Geliştirme Araçları

Genel amaçlı üst düzey bir dil olan Java güçlü bir yazılım geliştirme aracıdır. Java ile yapılan bazı uygulamaları şöyle sıralayabiliriz:

Yazılım Geliştirme Araçları

Kaynak programı derleme, koşturma, hata ayıklama ve uygulama programının dökümantasyonunu hazırlamak için gerekli olan araçlar JSDK içinde yer alır. Windows işletim sisteminde java kaynak programlarını derlemek için JSDK içindeki javac.exe derleyicisini, java uygulamalarını çalıştırmak için java.exe programını ve doküman hazırlamak için javadoc.exe yorumlayıcısını kullanacağız. Başka işletim sistemleri için de bu programların karşılıkları vardır.

Uygulama Programları Arayüzü

[API - Application Programming Interface] : Java’nın en önemli özeliklerinden birisi büyük ve ücretsiz bir kütüphaneye sahip olmasıdır. Java API  denilen bu kütüphanede bir programcının gerekseme duyabileceği basit sınıflardan başlayarak, ağ, güvenlik, XML, veri tabanlarına erişim gibi ileri konularla ilgili sınıflar, arayüzler ve metotlar yer alır. Bu satırların yazıldığı sırada, sözkonusu kütüphane http://download.oracle.com/javase/6/docs/api/  adresinde yer almaktadır. Bu adrese isteyen herkes ulaşabilir ve orada yer alan araçlar, gene ücretsiz olarak dağıtılan JSEDK [Java Standard Environment Development Kit 6]  içinde yer alır. Bu satılar yazılırken JSEDK nın 6. Sürümü sonuncudur. Zaman içerisinde, JSEDK nın ve dolayısıyla API nin yeni sürümleri ortaya çıkar. Yeni uygulamalar yazarken, en son sürümün kullanılması tercih edilmelidir.


Kullanıcı Arayüzü Araçları


Kullanıcı görsel arayüzlerini [GUI- Graphical User Interfaces] hazırlamak için, Java dili, Swing ve Java 2D gibi gelişmiş araçlara sahiptir.

Bütünleşik Kütüphaneler


Java IDL API, JDBCTM API, Java Naming and Directory InterfaceTM ("J.N.D.I.") API, Java RMI  (Java Remote Method Invocation over Internet ), Inter-ORB Protocol Technology (Java RMI-IIOP Technology) gibi araçlar, veri tabanlarına ve uzaktaki nesnelere erişimi sağlar.

Java Dilinin Başlıca Uygulamaları
Sınıf Kütüphaneleri                  Başka uygulamalarda kullanılacak kütüphane sınıfları yaratır.

Konsol Uygulamaları               Satır komutu arayüzü için görsel Java uygulamaları yaratır.

Web Uygulamaları                   Web kullanıcı arayüzü için görsel Java uygulamaları yaratır.

XML Uygulamaları                 xml Web servisleri yaratır.

Veritabanı Uygulamaları           veritanlarını yönetmek için uygulama programları yaratır.

Mobile Web Uygulamaları        PDA,  cep telefonları gibi taşınabilir cihazlar için uygulama programları yaratır.

Oyun Programları                   java ile gelişkin oyun programları yazılır.



Java size ne sağlar?

Java dili bilgisayarla ilgili hemen her konuda işe yarayan bir dil olduğu için, bütün dünyada, java programcıları üstün bir ayrıcalığa sahiptir. Onlar kolayca yüksek ücretli iş bulabilirler. Programcılığa yeni başlayan birisi iseniz, java, bu derste size şu kolylıkları sunacaktır:



·         Java basit bir dil olduğu için, onu diğer dillere göre daha kısa bir zamanda öğreneceksiniz.

·         Java programları, örneğin, aynı işi yapan C++ kaynak programlarının dörtte biri kadar uzundur. Dolayısıyla daha az kod yazarak zamandan ve emekten kazanacaksınız.

·         Daha kolay kod yazacaksınız. Java API size gerekseme duyacağınız hemen her sınıfı ve metodu hazır verecektir. İstediğinizde, bu sınıfları ve metotlarını kullanabilecek, istediğinizde onlardan altsınıflar türetebileceksiniz. Bunları yapmakla, kaynak programınızda oluşabilecek hataları önlemiş olacaksınız. Tabii, gerekseme duyuyorsanız, her zaman yeni sınıflar ve yeni metotlar yazabileceksiniz.

·         Java uygulamalarını bir kez yazıp her yerde çalıştırabilirsiniz.

·         Yazdığınız uygulamalar, Java API dışında bir kütüphane kullanmadığı için, her platformda çalışır. Dolayısıyla onları kolayca yayabilirsiniz.

27.7.19

Film sitelerinde yer alan terimlerin anlamları nedir?

torrent: bir sunucudan bağımsız şekilde insanların birbirleriyle dosya takas etmek için kullandığı sisteme verilen isimdir. türkçe’de sel manasına gelir. torrent ile paylaşılan dosyalar sel gibi büyür ve internette yayılır, bu yayılmanın önüne geçebilecek biri yoktur çünkü torrentler tek bir sunucuda var olmaz milyonlarca torrent kullanıcısının bilgisayarında yer alırlar.

seed/seeder: türkçeye tohum ya da beslemek olarak çevirilebilir. eğer bir torrenti indirdikten sonra silmediyseniz bilgisayarınız internetinizi kullanarak o torrent dosyalarını başka indirenlere gönderir, buna seed etmek denir. bir torrent dosyası indirilirken ya da indirdikten sonra seed edilebilir. seed etmek internetinizin upload hızı ile bağlantılıdır.

leech/leecher: türkçeye sülük, sömürmek olarak çevirilebilir. torrent dünyasında bir dosya indirme işlemine leech indiren kişiye ise leecher denir.

peer: türkçeye eş olarak çevirilebilir. bir torrenti başlattığınızda, torrenti önceden indirmiş olan ya da indirmekte olan başka insanlara bağlanırsınız bu insanlar sizin eşlerinizdir. indirme tamamlanıncaya dek eşleriniz ile dosya alışverişi yaparsınız.

hit&run: türkçe manası vur-kaçtır. bir torrenti indirip seed etmeden yani başkaları ile paylaşmadan kaldırma işlemine denir. hit&run akıllıca gibi gözükse de gelecekte indireceğiniz torrentlerin hızının yavaşlamasına neden olur.

rip: bluray diskleri ya da dvdleri dijital ortama uygun hale getirmeye riplemek denir. bir dosyayı boyuttan tasarruf edebilmek için sıkıştırmakta riplemek olarak adlandırılabilir.

repack: yeniden paketleme manasına gelir. daha çok oyun torrentlerinde görülür. repack edilmiş bir oyun normaline göre çok daha düşük bir boyuta sahip olur. repackler içerik bakımından eksik değildir, herhangi bir şey çıkarılmamıştır. yalnızca sıkıştırılma yapışmış vaziyettedir. film ya da dizilerde ise bir grup hatalı bir torrent paylaşmış ise bu hataları giderip yeni bir versiyon yayınlar ve buna repack etiketini koyar.

proper: paylaşılan torrentteki bir hata (ses kayması, görüntü bozukluğu gibi…) giderilerek yeniden paylaşılır ve bu torrente proper etikeki koyulur.

mkv: adını matruşka bebeklerden alır. açılımı matroska video streamdir. torrent piyasasında en çok kullanılan video formatıdır. bunun nedeni aynı boyuttaki diğer formatlara göre çok daha iyi bir görüntü sunar, içinde birden fazla ses ya da altyazı dosyası barındırabilir.

x264/h264: görüntü akışını günümüz standartlarında çözümlemek için yazılmış bir yazılım kütüphanesidir. televizyonlar, kameralar ve video oynatıcıları için en uygun encode biçimidir.

x265/h265/hevc: x264e göre daha yeni ve yaygın olmayan bir encode biçimidir. bazı televizyonlar ya da bazı telefonlar bu biçimi desteklemeyebilir. windows medya player bu biçimi hala desteklememektedir. x264e göre daha düşük boyutlarda daha yüksek görüntü kalitesi sağlar. x265 ile riplenmiş 5gb bir film, x264 ile riplenmiş 15gb bir filmin görüntü kalitesini sunabilir.

dual: film ve dizi torrentlerinde görülür, çift sesli manasına gelir. örneğin türkçe dublaj ve orijinal ingilizce ses arasında geçiş yapabilirsiniz.

bluray: çok kaliteli videoların hazırlanıp dağıtılması için kullanılan bir teknolojidir. ham blurayler 100gb’a kadar dosya boyutuna sahip olabilir. bluray torrentler orijinal bluray disklerden alınır.

remux: bluray bir filmin web üzerinde ya da cihazlarda oynatılabilmesi için herhangi bir ripleme işlemi yapılmadan yani kalite kaybı olmadan mkv formatına çevirilmesiyle elde edilir. ayrıca bluray diskler birden fazla dil için ses dosyası içerir. bu ses dosyaları çıkartılarak genelde yalnızca orijinal dildeki ses dosyası bırakılır. böylece boyuttan tasarruf edilmiş olunur.

bdrip: bluray disclerden alınan dosyasının riplenmesi ile elde edilen video türüdür. kalitesi ham bluraye göre daha düşüktür.

brrip: bdripin riplenmesi ile elde edilen dosya türdür. kalitesi bdripe göre daha düşüktür.

web-dl: bir filmin ya da dizinin web üzerinden indirilmesi ile oluşturulan torrentlere verilen isimdir. örneğin netflix üzerinden indirilip paylaşılan bir dizi web-dl türünde olur.

webrip: webden indirilen bir videonun riplenmesi ile elde edilen torrent türüdür. web-dl’ye göre boyutu ve kalitesi düşük olabilir.

dvdrip: dvdden alınan içeriğin riplenmesi ile oluşur.

hdtv: hd bir şekilde televizyonlar üzerinden kayıt edilen film ya da dizilere verilen isimdir. bu gibi torrentlerde kanal logosu ya da çeşitli reklamlar görünebilir.

korsub: açılımı “korean subbed”, türkçesi ise “korece altyazılı”dır. bu altyazı kapatılamaz ya da kaldırılamaz, gömülüdür. kalitesi hd değildir fakat izlenebilir. koredeki bazı otellerin büyük film yapımcıları ile anlaşması vardır, bu sayede otellerdeki sinema sistemlerinde filmleri erkenden yayımlarlar, haliyle korsub filmler de buradan alınır.

hdr: açılımı high dynamic range olan hdr, fotoğraf makineleri, telefonlar ve 4k televizyonlarda bulunan bir özelliktir. daha canlı ve aydınlık görüntüler sunar. örnek, örnek 2.

dts: açılımı digital theatre systems (dijital sinema sistemleri) olan dts, yüksek kalite ses teknolojisidir. her cihaz dts desteklemiyor olabilir.

forced: genelde altyazılarda gördüğümüz forcedin manası zorlanmış olarak türkçe’ye çevirilebilir. filmde ya da dizide farklı bir dilde konuşma geçerken bu altyazılar devreye girer. örneğin türk filmlerinde ingilizce konuşulan bir sahnede forced altyazı görürüz.

extended: türkçeye uzatılmış olarak çevirilebilir.sinemada izlediğiniz filmlerde göremeyeceğiniz sahneleri içerir. extended versiyonlar bluray satışını artırmak için piyasaya sürülür. eğer bir film ya da dizide extended etiketi varsa normalinden 5-30 dakika daha uzun olacaktır.

theatrical cut: bir filmin sinemada gösterildiği biçimdir.

director’s cut: yönetmen tarafından hazırlamıştır, çeşitli çıkarılmış sahneleri içerir. haliyle theatrical cuta göre daha uzundur.

uncut/unrated: cinsellik, vahşet, argo gibi sinemalarda yayınlanamayacak bazı kısımları içeren versiyondur.

remastered: bir filmin, oyunun veya müziğin efektsel, işitsel, grafiksel anlamda iyileştirilmesine denir.


24.7.19

Windows 10'da işletim sistemi bilgilerini bulma

Cihazınızın hangi Windows sürümünü çalıştırdığını bulmak için Windows logo  tuşu + R tuşlarına basın, Aç kutusuna winver yazın ve ardından Tamam'ı seçin.

Daha fazla bilgi edinmek için aşağıdaki bilgilere bakın:

1- Başlangıç  düğmesi > Ayarlar  > Sistem  > Hakkında  simgesini seçin.
2- Cihaz özellikleri > Sistem türü altından Windows'un 32 bitlik mi yoksa 64 bitlik mi sürümünü çalıştırdığınıza bakın.
3- Windows özellikleri altında cihazınızın hangi Windows sürümünü çalıştırdığını denetleyin.