{"id":1007,"date":"2020-04-02T12:02:26","date_gmt":"2020-04-02T09:02:26","guid":{"rendered":"http:\/\/hilmibilici.com\/blog\/?p=1007"},"modified":"2020-04-02T12:02:26","modified_gmt":"2020-04-02T09:02:26","slug":"2-bolum-ders-1-platform-ve-programlama-dili-secimi","status":"publish","type":"post","link":"http:\/\/hilmibilici.com\/?p=1007","title":{"rendered":"2.B\u00f6l\u00fcm Ders-1: PLATFORM VE PROGRAMLAMA D\u0130L\u0130 SE\u00c7\u0130M\u0130"},"content":{"rendered":"<div class=\"content-item-description lesson-description\">\n<ol>\n<li><strong>PLATFORM VE PROGRAMLAMA D\u0130L\u0130 SE\u00c7\u0130M\u0130<\/strong><\/li>\n<\/ol>\n<p><strong>Android Programlama<\/strong><\/p>\n<p>Android i\u00e7in geli\u015ftirme s\u00fcreci:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Java dosyalar\u0131nda, program\u0131n mant\u0131\u011f\u0131n\u0131 \u2013 uygulaman\u0131n ne yapmas\u0131n\u0131 istedi\u011finizi a\u00e7\u0131klars\u0131n\u0131z.<\/li>\n<li>XML dosyalar\u0131nda mizanpajlar\u0131 \u2013 g\u00f6r\u00fcn\u00fcm\u00fc tasarlars\u0131n\u0131z.<\/li>\n<li>Uygulama yaz\u0131ld\u0131ktan sonra, t\u00fcm dosyalar\u0131 derlemek ve bunlar\u0131 Android cihazlarda \u00e7al\u0131\u015ft\u0131rabilece\u011finiz ve \/ veya Google Play\u2019de yay\u0131nlayabilece\u011finiz bir .apk dosyas\u0131nda bir araya getirmek i\u00e7in derleme arac\u0131n\u0131 kullanman\u0131z gerekir.<\/li>\n<li>Entegre bir geli\u015ftirme ortam\u0131 (IDE) ile birlikte Android i\u00e7in bir uygulama olu\u015fturmak i\u00e7in kullan\u0131lan t\u00fcm yard\u0131mc\u0131 programlar ve dosyalar. Bir IDE, kod dosyalar\u0131n\u0131z\u0131 d\u00fczenlemek, derlemek ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in a\u00e7t\u0131\u011f\u0131n\u0131z bir programd\u0131r.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><!--more--><\/p>\n<table width=\"612\">\n<tbody>\n<tr>\n<td colspan=\"2\" width=\"130\"><strong>Platform<\/strong><\/td>\n<td width=\"397\"><strong>Android Studio Paketi<\/strong><\/td>\n<td width=\"85\"><strong>Boyut<\/strong><\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\" rowspan=\"2\" width=\"130\"><strong>Windows<br \/>\n(64-bit)<\/strong><\/td>\n<td width=\"397\">android-studio-ide-181.5056338-windows.exe<br \/>\nTavsiye edilen<\/td>\n<td width=\"85\">927 MB<\/td>\n<\/tr>\n<tr>\n<td width=\"397\">android-studio-ide-181.5056338-windows.zip<br \/>\nNo .exe installer<\/td>\n<td width=\"85\">1001 MB<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\" width=\"130\"><strong>Windows<br \/>\n(32-bit)<\/strong><\/td>\n<td width=\"397\">android-studio-ide-181.5056338-windows32.zip<br \/>\nNo .exe installer<\/td>\n<td width=\"85\">1000 MB<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\" width=\"130\"><strong>Linux<\/strong><\/td>\n<td width=\"397\">android-studio-ide-181.5056338-linux.zip<\/td>\n<td width=\"85\">1007 MB<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\" width=\"130\"><strong>Mac<\/strong><\/td>\n<td width=\"397\">android-studio-ide-181.5056338-mac.dmg<\/td>\n<td width=\"85\">989 MB<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td width=\"115\"><\/td>\n<td width=\"397\"><\/td>\n<td width=\"85\"><\/td>\n<\/tr>\n<tr>\n<td width=\"15\"><\/td>\n<td width=\"115\"><\/td>\n<td width=\"397\"><\/td>\n<td width=\"85\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<ul>\n<li>\u00d6nceleri, Android geli\u015ftirme i\u00e7in standart IDE Eclipse kullan\u0131l\u0131r idi, ancak \u015fimdi bir Google \u00fcr\u00fcn\u00fc olan ve daha i\u015flevsel bir Android Studio platformu kullan\u0131l\u0131yor.<\/li>\n<\/ul>\n<p><strong>5.1.2 Java ile Android Programlama<\/strong><\/p>\n<p>Java Programlama dili ile Native olarak android uygulama geli\u015ftirmek m\u00fcmk\u00fcnd\u00fcr.\u00a0 Java ile programlama yaparken duyaca\u011f\u0131m\u0131z JVM,\u00a0JRE\u00a0ve\u00a0JDK\u00a0terimlerini bilmemiz gerekli.<\/p>\n<p><strong><em>Tablo 5.1 Android Studio Paketleri<\/em><\/strong><\/p>\n<p><strong><em>JVM (Java Virtiual Machine \u2013 Java Sanal Makinesi )<\/em><\/strong><\/p>\n<p>Java\u2019n\u0131n en temel ve en cazip \u00f6zelli\u011fi her i\u015fletim sisteminde \u00e7al\u0131\u015fabilmesidir, bunu sa\u011flayan yap\u0131 ise\u00a0JVM\u2018dir. Java platformunun ba\u011f\u0131ms\u0131zl\u0131\u011f\u0131 temel olarak Java sanal makinesinden (JVM) olu\u015fur. JVM nesne mod\u00fcl\u00fc format\u0131 olan class uzant\u0131l\u0131 s\u0131n\u0131f dosyalar\u0131n\u0131n belle\u011fe y\u00fcklenmesi, kontrol edilmnesi ve \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 i\u00e7in gereken hizmetleri sunan sanal bir programd\u0131r. Temel g\u00f6revi s\u0131n\u0131f dosyalar\u0131n\u0131 yorumlamakt\u0131r.\u00a0<a href=\"http:\/\/tez.hilmibilici.com\/kurslar\/mobil-programlama-temelleri\/lessons\/2-bolum-ders-1-platform-ve-programlama-dili-secimi\/#_ftn1\" name=\"_ftnref1\">[1]<\/a><\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-medium wp-image-766\" src=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/jwm-300x200.jpg\" sizes=\"(max-width: 300px) 100vw, 300px\" srcset=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/jwm-300x200.jpg 300w, http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/jwm.jpg 700w\" alt=\"\" width=\"300\" height=\"200\" \/><\/p>\n<p>\u015eekil 7: Java Sanal Makine<\/p>\n<p>WORA prensibi ile \u00e7al\u0131\u015f\u0131r.<a href=\"http:\/\/tez.hilmibilici.com\/kurslar\/mobil-programlama-temelleri\/lessons\/2-bolum-ders-1-platform-ve-programlama-dili-secimi\/#_ftn2\" name=\"_ftnref2\">[2]<\/a>\u00a0\u00a0\u00a0Hangi i\u015fletim sistemi veya donan\u0131m\u0131n mevcut oldu\u011funa bak\u0131lmaks\u0131z\u0131n, JVM, programlar\u0131n i\u00e7inde \u00e7al\u0131\u015fmas\u0131 i\u00e7in \u00f6ng\u00f6r\u00fclebilir bir ortam olu\u015fturur.<\/p>\n<p><strong>JRE (Java Runtime Environment- Java \u00c7al\u0131\u015fma Zaman\u0131 Ortam\u0131)<\/strong><\/p>\n<p>Java teknolojisiyle yaz\u0131lm\u0131\u015f uygulamalar\u0131 ve k\u00fc\u00e7\u00fck uygulamalar\u0131 (applet)\u00a0\u00e7al\u0131\u015ft\u0131ran bilgisayar kullan\u0131c\u0131lar\u0131na gerekli \u00fccretsiz temin edilen bir bir Java Sanal Makine uygulamas\u0131d\u0131r. Java Runtime Environment, java programlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in Java s\u0131n\u0131flar\u0131ndan olu\u015fan bir k\u00fct\u00fcphaneye sahip bir uygulamad\u0131r.<\/p>\n<p><strong>JDK (Java Development Kit \u2013 Java Geli\u015ftirme Kiti)<\/strong><\/p>\n<p>Java Geli\u015ftirme Kiti Java geli\u015ftiricilerine y\u00f6nelik Oracle firmas\u0131 taraf\u0131ndan haz\u0131rlanm\u0131\u015f bir \u00fcr\u00fcnd\u00fcr. Java\u2019n\u0131n kullan\u0131ma sunulmas\u0131ndan beri en geni\u015f kullan\u0131m alan\u0131na sahip Java geli\u015ftirme kitidir.<\/p>\n<p><em>JDK; JRE, Java Compiler, Debug Tool (hata ay\u0131klama) ve di\u011fer gerekli ara\u00e7lardan olu\u015fur.<\/em><\/p>\n<p>Yazm\u0131\u015f oldu\u011fumuz \u201c.java\u201d uzant\u0131l\u0131 kodumuzu derleyip\u00a0JVM\u2018in okuyabilece\u011fi \u201c.class\u201d uzant\u0131l\u0131 hale getirebilmemiz i\u00e7in\u00a0<strong>Java Geli\u015ftirme Kiti\u2019ne\u00a0<\/strong>ihtiya\u00e7 duyar\u0131z.<br \/>\nJava Geli\u015ftirme Paketi (JDK) Java kodunu bytecode\u2019a \u00e7evirir, onu JVM\u2019ye y\u00fckler\u00a0ve farkl\u0131 i\u015fletim sistemlerinde \u00e7al\u0131\u015ft\u0131r\u0131r. Bunun yan\u0131nda Java uygulamalar\u0131 geli\u015ftirmek ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in gerekli di\u011fer t\u00fcm ara\u00e7lar\u0131da bar\u0131nd\u0131r\u0131r.<\/p>\n<h3>Java programlama dili<\/h3>\n<p>Java dili, a\u00e7\u0131k kaynak kodlu, platformdan ba\u011f\u0131ms\u0131z, y\u00fcksek performansl\u0131, \u00e7ok i\u015flevli, y\u00fcksek seviye bug\u00fcne kadar kullan\u0131lan en yayg\u0131n ve pop\u00fcler programlama dillerinden biridir.\u00a0Dilin ilk versiyonu 1996 y\u0131l\u0131nda Sun Microsystems\u2019\u0131n m\u00fchendisi James Gosling taraf\u0131ndan yaz\u0131ld\u0131 ve ard\u0131ndan Oracle taraf\u0131ndan desteklendi.\u00a0Java, \u00e7e\u015fitli g\u00f6revler i\u00e7in kullan\u0131labilecek evrensel bir programlama dili olarak tasarlanm\u0131\u015ft\u0131r.\u00a0Ve \u015fimdi Java dili uzun bir yol kat etti, bir\u00e7ok farkl\u0131 s\u00fcr\u00fcm\u00fc yay\u0131nland\u0131.\u00a0En son s\u00fcr\u00fcm\u00fc, Eyl\u00fcl 2018\u2019de yay\u0131mlanan Java 11\u2019dir.\u00a0Java, basit bir evrensel dilden b\u00fct\u00fcn bir platforma ve \u00e7e\u015fitli g\u00f6revlerde kullan\u0131lan \u00e7e\u015fitli teknolojileri birle\u015ftiren bir ekosisteme geli\u015fti: masa\u00fcst\u00fc uygulamalar\u0131 olu\u015fturmaktan b\u00fcy\u00fck web portallar\u0131 ve servisleri yazmaya kadar.\u00a0Ayr\u0131ca, Java dili\u00a0s\u0131radan bilgisayarlar, tabletler, ak\u0131ll\u0131 telefonlar ve cep telefonlar\u0131 ve hatta ev aletleri i\u00e7in yaz\u0131l\u0131m olu\u015fturmada kullan\u0131l\u0131r.\u00a0Android mobil i\u015fletim sisteminin pop\u00fclerli\u011fi de dilin geli\u015fiminde katk\u0131s\u0131 olmu\u015ftur.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-767\" src=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/wora-300x87.png\" sizes=\"(max-width: 490px) 100vw, 490px\" srcset=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/wora-300x87.png 300w, http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/wora.png 651w\" alt=\"\" width=\"490\" height=\"142\" \/><\/p>\n<p><a name=\"_Toc1736702\"><\/a>\u015eekil 8: WORA Prensibi<\/p>\n<p>Bir Java yaz\u0131l\u0131m\u0131 geli\u015ftirilmesinde Programc\u0131 Java kodunu yazar (dosya .java olarak kaydedilir. Bu kod bir Java derleyicisi ile derlenir. Sonu\u00e7ta byte code ad\u0131 verilen (.class uzant\u0131l\u0131 byte code) bir t\u00fcr makine kodu olu\u015fur. Platform ba\u011f\u0131ms\u0131zl\u0131\u011f\u0131n\u0131 sa\u011flayan \u015fey byte code\u2019dur. \u00c7\u00fcnk\u00fc bir kere bytecode olu\u015ftuktan sonra yaz\u0131l\u0131m sanal makine i\u00e7eren t\u00fcm i\u015fletim sistemlerinde sorunsuz \u00e7al\u0131\u015f\u0131r. Bu \u201cbyte code\u201d Java Sanal Makinesi taraf\u0131ndan sat\u0131 sat\u0131r y\u00fcr\u00fct\u00fcl\u00fcr. Bu byte kod ta\u015f\u0131nabilme \u00f6zeli\u011fine sahiptir. Bu \u00f6zellik JAVA d\u00fcnyas\u0131nda WORA (Write Once Run Anywhere (bir kere yaz ve her yerde\u00e7al\u0131\u015ft\u0131r) ) slogan\u0131 ile bilinir.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-768\" src=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/jvm.jpg\" sizes=\"(max-width: 463px) 100vw, 463px\" srcset=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/jvm.jpg 463w, http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/jvm-278x300.jpg 278w\" alt=\"\" width=\"463\" height=\"500\" \/><\/p>\n<p><a name=\"_Toc1736703\"><\/a>\u015eekil 9:JVM<\/p>\n<p>&nbsp;<\/p>\n<p>Baz\u0131 java aileleri ve yapabilecekleri a\u015fa\u011f\u0131da s\u0131ralanm\u0131\u015ft\u0131r\u00a0<a href=\"http:\/\/tez.hilmibilici.com\/kurslar\/mobil-programlama-temelleri\/lessons\/2-bolum-ders-1-platform-ve-programlama-dili-secimi\/#_ftn3\" name=\"_ftnref3\">[3]<\/a>:<\/p>\n<p><strong>j2se<\/strong>\u00a0(JAVA to Standard Edition): Java\u2019n\u0131n standart s\u00fcr\u00fcm\u00fcd\u00fcr ve temel fonksiyon ve \u00f6zellikleri i\u00e7erir. Genelde java programlama dili denilince kastedilen API\u2019nin ismidir.<\/p>\n<p><strong>j2ee (<\/strong>JAVA to Enterprise Edition): Java\u2019n\u0131n geli\u015fmi\u015f s\u00fcr\u00fcm\u00fcd\u00fcr. Genelde web programlamay\u0131 i\u00e7eren JSP gibi eklentiler bu paketin i\u00e7erisindedir.<\/p>\n<p><strong>j2me<\/strong>\u00a0( JAVA to micro edition): Java\u2019n\u0131n k\u00fc\u00e7\u00fclt\u00fclm\u00fc\u015f s\u00fcr\u00fcm\u00fcd\u00fcr. Standart s\u00fcr\u00fcm\u00fc olan J2SE\u2019ye g\u00f6re daha hafif ve daha h\u0131zl\u0131 olarak tasarlanm\u0131\u015ft\u0131r. Burada tam bir alt k\u00fcme olarak d\u00fc\u015f\u00fcnmek ve j2se\u2019de bulunan her\u015feyin j2me\u2019de de olaca\u011f\u0131n\u0131 sanmak bir hatad\u0131r. J2ME i\u00e7erisinde programlanan ortama g\u00f6re (\u00f6rne\u011fin cep telefonu) \u00f6zel olarak kullan\u0131lan ilave s\u0131n\u0131f ve k\u00fct\u00fcphaneler bulunmaktad\u0131r.<\/p>\n<p><strong>j2card<\/strong>\u00a0(JAVA to card): JAVA\u2019n\u0131n ak\u0131ll\u0131 kartlar (smart cards) i\u00e7in geli\u015ftirilen paketinin ismidir.<\/p>\n<p>public class Program<\/p>\n<p>{<\/p>\n<p>public static void main (String args[])<\/p>\n<p>{<\/p>\n<p>System.out.println(\u201cHello Java!\u201d);<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>Java nesne y\u00f6nelimli bir dildir, bu nedenle t\u00fcm program etkile\u015fimli s\u0131n\u0131flar k\u00fcmesi olarak temsil edilir.\u00a0Bu durumda, bir Program s\u0131n\u0131f\u0131 tan\u0131mlan\u0131r.<\/p>\n<p>Bir s\u0131n\u0131f tan\u0131mlarken, \u00f6nce\u00a0bu eri\u015fimin herkes taraf\u0131ndan eri\u015filebilir olaca\u011f\u0131n\u0131 belirten bir\u00a0kamu\u00a0eri\u015fim\u00a0de\u011fi\u015ftiricisi\u00a0gelir, yani onu komut sat\u0131r\u0131ndan ba\u015flatabiliriz.\u00a0Daha sonra\u00a0s\u0131n\u0131f\u00a0anahtar kelimesi\u00a0ve daha sonra s\u0131n\u0131f ad\u0131 gelir.\u00a0Yani, s\u0131n\u0131f Program olarak adland\u0131r\u0131l\u0131r.\u00a0K\u0131vr\u0131ml\u0131 parantez i\u00e7inde ad\u0131ndan sonra s\u0131n\u0131f\u0131n i\u00e7eri\u011fidir.<\/p>\n<p><strong>Kotlin ile Android Programlama<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-769\" src=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/kotlin.png\" sizes=\"(max-width: 800px) 100vw, 800px\" srcset=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/kotlin.png 800w, http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/kotlin-300x120.png 300w, http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/kotlin-768x307.png 768w\" alt=\"\" width=\"800\" height=\"320\" \/><\/p>\n<p>\u015eekil 10: Kotlin<\/p>\n<p>Kotlin, 2010 y\u0131l\u0131nda Rus \u015firketi JetBrains\u2019ten taraf\u0131ndan haz\u0131rlanmaya ba\u015flanan gen\u00e7 bir dildir.\u00a02011 y\u0131l\u0131nda \u201cJVM Language Summit\u201d etkinli\u011finde\u00a0duyuruldu.\u00a0Google I \/ O 2017 \u00a0konferans\u0131nda, Android geli\u015ftirme ekibi, Kotlin\u2019in Android uygulamalar\u0131n\u0131n geli\u015ftirilmesi i\u00e7in resmi destek ald\u0131\u011f\u0131n\u0131\u00a0bildirdi. Proje a\u00e7\u0131k kaynak kodludur. Github adresini ziyaret ederek projeye destek olabilir veya inceleyebilirsiniz. Ad\u0131 Rusya\u2019da bulunan Kotlin adas\u0131ndan gelmektedir.<\/p>\n<p>\u201cJava varken neden b\u00f6yle bir dil geli\u015ftirdiniz?\u201d sorusuna firma \u201cdaha \u00f6zl\u00fc kodlar yazmay\u0131 sa\u011flamak i\u00e7in\u201d demi\u015ftir. Yani Kotlin ile Java\u2019ya g\u00f6re daha k\u0131sa ve daha \u00f6zg\u00fcn \u015fekilde kodlama yap\u0131la bilinmektedir.<\/p>\n<p>Kotlin programlama dili ile JVM\u00a0uygulamalar\u0131( Server-side Uygulamalar), Android Uygulamalar\u0131, Browser uygulamalar\u0131\u00a0(JavaScript tabanl\u0131 Web Uygulamalar\u0131), Native\u00a0Uygulamalar ( MacOS, iOS ve G\u00f6m\u00fcl\u00fc sistemler Uygulamalar\u0131) geli\u015ftirilebiliniyor.<\/p>\n<p>Java, C ve C ++ gibi, Kotlin\u00a0statik olarak yaz\u0131lm\u0131\u015f bir dildir.\u00a0Hem nesne y\u00f6nelimli hem de prosed\u00fcrel programlamay\u0131 destekler.\u00a0Yukar\u0131da belirtilen dillere benzer \u015fekilde, bir Kotlin program\u0131n\u0131n ana kodu, bir\u00a0main komut sat\u0131r\u0131 arg\u00fcman dizisinden ge\u00e7irilen bir\u00a0i\u015fleve yaz\u0131l\u0131r:<\/p>\n<p>package merhaba<\/p>\n<p>fun main(args: Array &lt; String &gt; ) {<\/p>\n<p>val scope = \u201cD\u00fcnya\u201d<\/p>\n<p>println(\u201cMerhaba, $scope!\u201d) \/\/ noktal\u0131 virg\u00fcl iste\u011fe ba\u011fl\u0131d\u0131r<\/p>\n<p>}<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-770\" src=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/kotlin2.jpg\" sizes=\"(max-width: 1600px) 100vw, 1600px\" srcset=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/kotlin2.jpg 1600w, http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/kotlin2-300x169.jpg 300w, http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/kotlin2-768x432.jpg 768w, http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/kotlin2-1024x576.jpg 1024w\" alt=\"\" width=\"1600\" height=\"900\" \/><\/p>\n<p>\u015eekil 11: Kotlin ile Native uygulamalar yapma<\/p>\n<p><strong>Kotlin ve Java-Android \u0130li\u015fkisi<\/strong><\/p>\n<p>Kotlin\u2019in ba\u015fl\u0131ca \u00f6zellikleri ve faydalar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li>JVM bayt kodu\u00a0veya JavaScript ile\u00a0derlenir.<\/li>\n<li>Mevcut t\u00fcm Java \u00e7er\u00e7evelerini ve kitapl\u0131klar\u0131n\u0131 kullanabilir.<\/li>\n<li>Kotlin\u2019de null hatas\u0131 almak zordur.<\/li>\n<li>Dil \u00f6\u011frenmek \u00e7ok kolayd\u0131r.<\/li>\n<li>Kaynak kodu a\u00e7\u0131kt\u0131r.<\/li>\n<li>Do\u011fru i\u015flev t\u00fcrleri vard\u0131r.<\/li>\n<li>Null-safety, Smart casts, String templates,Properties, Primary constructors, Range, Operator overloading, Data Classes gibi bo\u015f g\u00fcvenlik ve veri s\u0131n\u0131flar\u0131 Kotlin de olan Java da olmayan \u00f6zellikler aras\u0131ndad\u0131r.<\/li>\n<li>Kotlin\u2019 de ak\u0131ll\u0131 tip d\u00f6n\u00fc\u015f\u00fcmleri vard\u0131r.<\/li>\n<li>Kotlin\u2019 de her \u015fey bir nesnedir.<\/li>\n<li>Sunucu (Server) ve istemci (Client) tabanl\u0131 web uygulamalar\u0131 geli\u015ftirmeyi desteklemektedir.<\/li>\n<li>Java ile y\u00fczde y\u00fcz uyumlu \u00e7al\u0131\u015f\u0131la bilirlik.<\/li>\n<\/ul>\n<p>Kotlin dilini \u00f6ne \u00e7\u0131karan en \u00f6nemli etkenlerden birisi Google firmas\u0131n\u0131n Android Geli\u015ftirme b\u00f6l\u00fcm\u00fcn\u00fcn bu dile g\u00fcvenmesi ve Android uygulamalar\u0131 geli\u015ftirmek i\u00e7in desteklemelerini duyurmas\u0131d\u0131r.<\/p>\n<p><strong>Kotlin, RxJava ve RxAndroid<\/strong><\/p>\n<p>ReactiveX ilk olarak Microsoft\u00a0taraf\u0131ndan ortaya \u00e7\u0131kar\u0131lm\u0131\u015f bir k\u00fct\u00fcphanedir. Observable yakla\u015f\u0131m\u0131<a href=\"http:\/\/tez.hilmibilici.com\/kurslar\/mobil-programlama-temelleri\/lessons\/2-bolum-ders-1-platform-ve-programlama-dili-secimi\/#_ftn4\" name=\"_ftnref4\">[4]<\/a>\u00a0kullanan ard\u0131\u015f\u0131k ve olay tabanl\u0131 programlar i\u00e7indir.<\/p>\n<p>RxJava da ReactiveX\u2019in Java Virtual Machine i\u00e7in ger\u00e7eklemesi (implementation) asl\u0131nda. Java 6 ve \u00fczerinde kullanabiliyor.<\/p>\n<p><strong>S\u0131n\u0131f beyan\u0131:<\/strong><\/p>\n<p>Kotlin asl\u0131nda Java dili ile etkile\u015fime girme ihtiyac\u0131 ile tasarlanm\u0131\u015ft\u0131.\u00a0Mevcut Java kodu, Kotlin\u2019den do\u011fal bir \u015fekilde \u00e7a\u011fr\u0131labilir ve Kotlin kodu da Java\u2019da sorunsuz bir \u015fekilde kullan\u0131labilir.<\/p>\n<p>class Person(<\/p>\n<p>id: Int,<\/p>\n<p>name: String,<\/p>\n<p>surname: String<\/p>\n<p>) : Human(id, name),<\/p>\n<p>KotlinMaker {<\/p>\n<p>\/\/ \u2026<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/tez.hilmibilici.com\/kurslar\/mobil-programlama-temelleri\/lessons\/2-bolum-ders-1-platform-ve-programlama-dili-secimi\/#_ftnref1\" name=\"_ftn1\">[1]<\/a>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<a href=\"https:\/\/www.javaworld.com\/article\/3272244\/core-java\/what-is-the-jvm-introducing-the-java-virtual-machine.html\">https:\/\/www.javaworld.com\/article\/3272244\/core-java\/what-is-the-jvm-introducing-the-java-virtual-machine.html<\/a>\u00a0\u00a0 27\/12\/2018<\/p>\n<p><a href=\"http:\/\/tez.hilmibilici.com\/kurslar\/mobil-programlama-temelleri\/lessons\/2-bolum-ders-1-platform-ve-programlama-dili-secimi\/#_ftnref2\" name=\"_ftn2\">[2]<\/a>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 WORA : Write once,\u00a0run anywhere (Bir kere yaz, her yerde \u00e7al\u0131\u015ft\u0131r.)<\/p>\n<p><a href=\"http:\/\/tez.hilmibilici.com\/kurslar\/mobil-programlama-temelleri\/lessons\/2-bolum-ders-1-platform-ve-programlama-dili-secimi\/#_ftnref3\" name=\"_ftn3\">[3]<\/a>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<a href=\"https:\/\/denizalkan.com.tr\/tum-kategoriler\/java-programlama-dili\/\">https:\/\/denizalkan.com.tr\/tum-kategoriler\/java-programlama-dili\/<\/a>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 :08.12.2018<\/p>\n<p><a href=\"http:\/\/tez.hilmibilici.com\/kurslar\/mobil-programlama-temelleri\/lessons\/2-bolum-ders-1-platform-ve-programlama-dili-secimi\/#_ftnref4\" name=\"_ftn4\">[4]<\/a>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Bilinen yordamsal (prosed\u00fcrel) programlamada oldu\u011fu gibi ard\u0131\u015f\u0131k olarak i\u015flenmi\u015f kodsal s\u00fcre\u00e7leri ad\u0131m ad\u0131m yerine getirip tepki g\u00f6stermekten ziyade, olay tabanl\u0131 duyarl\u0131l\u0131k sergilemekte olan ve belli ba\u015fl\u0131 olaylar cereyan etti\u011fi zaman refleks g\u00f6stermesine observable yakla\u015f\u0131m\u0131 denir.<\/p>\n<blockquote><p>Bu ve devam edecek anlat\u0131mlar\u0131n tamam\u0131 ve s\u0131navlar<\/p>\n<p><a href=\"http:\/\/tez.hilmibilici.com\">tez.hilmibilici.com\u00a0<\/a><\/p>\n<p>alt domaininde yay\u0131ndad\u0131r. Tezimi payla\u015f\u0131ma a\u00e7\u0131yorum. Al\u0131n teridir, l\u00fctfen payla\u015f\u0131rken kaynak belirtmeyi unutmay\u0131n.<span style=\"font-size: 16px;\">\u00a0<\/span><\/p><\/blockquote>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>PLATFORM VE PROGRAMLAMA D\u0130L\u0130 SE\u00c7\u0130M\u0130 Android Programlama Android i\u00e7in geli\u015ftirme s\u00fcreci: Java dosyalar\u0131nda, program\u0131n mant\u0131\u011f\u0131n\u0131 \u2013 uygulaman\u0131n ne yapmas\u0131n\u0131 istedi\u011finizi&#8230;<\/p>\n","protected":false},"author":1,"featured_media":83425,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[42],"tags":[53,72,245,246,247,248,249,272,303,354],"class_list":["post-1007","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobprog","tag-2020-mobil-programlama","tag-android-programlama","tag-java-calisma-zamani-ortami","tag-java-ile-android-programlama","tag-java-programlama-dili","tag-java-runtime-environment","tag-java-sanal-makinesi","tag-kotlin-ile-android-programlama","tag-mobil-programlama","tag-platform-ve-programlama-dili-secimi"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/hilmibilici.com\/index.php?rest_route=\/wp\/v2\/posts\/1007","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/hilmibilici.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/hilmibilici.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/hilmibilici.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/hilmibilici.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1007"}],"version-history":[{"count":0,"href":"http:\/\/hilmibilici.com\/index.php?rest_route=\/wp\/v2\/posts\/1007\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/hilmibilici.com\/index.php?rest_route=\/"}],"wp:attachment":[{"href":"http:\/\/hilmibilici.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1007"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/hilmibilici.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1007"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/hilmibilici.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}