Android programlama nereden başlamalı ?

  • Konuyu başlatan Konuyu başlatan meilo34
  • Başlangıç tarihi Başlangıç tarihi
Katılım
31 Aralık 2007
Mesajlar
17,486
Reaksiyon puanı
189
Puanları
243
Android in iOS ve Symbina karşı en büyük dezavantajı uygulamalarının java olması yüzünden %30 gibi bir performans kaybına mahkum olduğu yönünde. O zaman böyle bir şey ortadan kalkıyor.

O olay SDK (Java) ile yazılan yazılımlarda. Yazılımlar Java olduğu için performans kaybı oluyor. Ama NDK (C++) ile yazılan yazılımlarda bu sıkıntı olmaz. Ama piyasada C++ bilen kalifiye eleman bulmak zor. Bu yüzden genelde herkes yazılımları Java'da yazar :) Çünkü C++ kasıntı bir dil :)
 

HaYto

Öğrenci
Katılım
7 Kasım 2009
Mesajlar
5
Reaksiyon puanı
0
Puanları
1
Çok güzel yazı olmuş sağ-olun
 

annttiigs

Profesör
Katılım
7 Şubat 2007
Mesajlar
2,589
Reaksiyon puanı
24
Puanları
218
Android in iOS ve Symbina karşı en büyük dezavantajı uygulamalarının java olması yüzünden %30 gibi bir performans kaybına mahkum olduğu yönünde. O zaman böyle bir şey ortadan kalkıyor.
%30 çok aşırı bir rakam bence. Ortada tam anlamı ile bir jvm yok. app based jvm diyebiliriz ( uygulama başına bir jvm gibi düşünün ) olay yazılımcıda bitmekte. native c++ kadar performanslı olamayacaktır ancak %30 gerçekten de aşırı bir rakam. Sadede geldiğimizde;

son jelly bean ile smart phone'un kalbi olan dokunmatik hassasiyetine de eğilen google sanırım dalvik'i adam edecek :)

http://en.wikipedia.org/wiki/Dalvik_(software)
 

serkay1578

Doçent
Katılım
6 Ekim 2010
Mesajlar
893
Reaksiyon puanı
3
Puanları
0
Sevindim android sdk sı sadece java destekliyor sanıyordum.C++ desteklemesi çok iyimiş.
 

__L__

Asistan
Katılım
6 Şubat 2010
Mesajlar
264
Reaksiyon puanı
3
Puanları
0
%30 çok aşırı bir rakam bence. Ortada tam anlamı ile bir jvm yok. app based jvm diyebiliriz ( uygulama başına bir jvm gibi düşünün ) olay yazılımcıda bitmekte. native c++ kadar performanslı olamayacaktır ancak %30 gerçekten de aşırı bir rakam. Sadede geldiğimizde;

son jelly bean ile smart phone'un kalbi olan dokunmatik hassasiyetine de eğilen google sanırım dalvik'i adam edecek :)

http://en.wikipedia.org/wiki/Dalvik_(software)


Memory'i kendin kontrol edemiyorsun, böyle bir durumda ne kadar optimize edebilirsin ki. Bana göre sadece bu bile en azından %25 lik bir performans kaybıdır. Ayrıca işlemciyi bir de vm ile yoruyorsun. %30 çok normal bir yüzde.
 

annttiigs

Profesör
Katılım
7 Şubat 2007
Mesajlar
2,589
Reaksiyon puanı
24
Puanları
218
Memory'i kendin kontrol edemiyorsun, böyle bir durumda ne kadar optimize edebilirsin ki. Bana göre sadece bu bile en azından %25 lik bir performans kaybıdır. Ayrıca işlemciyi bir de vm ile yoruyorsun. %30 çok normal bir yüzde.
kusura bakmayın ama benim yorumumun eksikliği kadar sizinkinde de var. işlemciyi yordun, memory'i kontrol edemedin o zaman %30 demek biraz abest. bu iddianızı bir kanıt ile desteklemelisiniz.
 

__L__

Asistan
Katılım
6 Şubat 2010
Mesajlar
264
Reaksiyon puanı
3
Puanları
0
kusura bakmayın ama benim yorumumun eksikliği kadar sizinkinde de var. işlemciyi yordun, memory'i kontrol edemedin o zaman %30 demek biraz abest. bu iddianızı bir kanıt ile desteklemelisiniz.


Kusura bakmayın kesinlikle sizin yorumunuza bişi demiyorum, yanlış anlaşılmasın. Ben sadece C++'ın ne kadar kuvvetli ama bir o kadar da sıkıntılı (herşeyi kendiniz düşünmek zorundasınız), Java'nın ise ne kadar developer dostu ama bir o kadar da performanssız (C++'a nazaran) olduğuna değinmek istemiştim..
Kanıt olarak ben ne söylersem söyliyim siz karşı bir tez bulacaksınız nasılsa. Bu yüzden aynı projeyi hem C++ ile hem de Java ile yazarak görebilirsiniz..
 

tambjk

Profesör
Katılım
10 Mayıs 2011
Mesajlar
3,263
Reaksiyon puanı
16
Puanları
218
Kusura bakmayın kesinlikle sizin yorumunuza bişi demiyorum, yanlış anlaşılmasın. Ben sadece C++'ın ne kadar kuvvetli ama bir o kadar da sıkıntılı (herşeyi kendiniz düşünmek zorundasınız), Java'nın ise ne kadar developer dostu ama bir o kadar da performanssız (C++'a nazaran) olduğuna değinmek istemiştim..
Kanıt olarak ben ne söylersem söyliyim siz karşı bir tez bulacaksınız nasılsa. Bu yüzden aynı projeyi hem C++ ile hem de Java ile yazarak görebilirsiniz..

c++ 'ın performansına diyecek birşey yok elbette ama aynı uygulamanın c++ ve java ile geliştirme ve bakım maliyetlerini(zaman x işgücü) de dikkate almak gerekir. Uygulama büyüdükçe performans açısından c++ farkı açar, geliştirme ve bakım maliyetleri açısında java farkı açar.

Donanımlar güçlenip projeler büyüdüğü sürece sektördeki yönelim ağırlıklı olarak java ve c# tarzı geliştirici dostu dillere doğru olacaktır diye düşünüyorum.
 

__L__

Asistan
Katılım
6 Şubat 2010
Mesajlar
264
Reaksiyon puanı
3
Puanları
0
c++ 'ın performansına diyecek birşey yok elbette ama aynı uygulamanın c++ ve java ile geliştirme ve bakım maliyetlerini(zaman x işgücü) de dikkate almak gerekir. Uygulama büyüdükçe performans açısından c++ farkı açar, geliştirme ve bakım maliyetleri açısında java farkı açar.

Donanımlar güçlenip projeler büyüdüğü sürece sektördeki yönelim ağırlıklı olarak java ve c# tarzı geliştirici dostu dillere doğru olacaktır diye düşünüyorum.


Yorumumda da bunları belirtmiştim, 2 tarafın da eksileri olarak.

Son cümlenize katılmıyorum açıkçası. Donanımlar ihtiyaçlar doğrultusunda gelişiyor. Her zaman için daha komplex işler yapma gerekliliği olacağından dolayı, temele dayalı programlamaya ihtiyaç doğacaktır. Bazı sektörler için bu dediğiniz doğru olabilir, ama mobil cihazlar için çok erken.
 

muratal

Doçent
Katılım
16 Ekim 2012
Mesajlar
996
Reaksiyon puanı
1
Puanları
0
Android programlama zor olsa gerek.
 
Katılım
31 Aralık 2007
Mesajlar
17,486
Reaksiyon puanı
189
Puanları
243
Okur yazarlık seviyemiz malum, kitap tavsiyesi gelmemesi normal. Bence piyasada bulabileceğin en iyi kitap;

http://www.deitel.com/Books/Android/AndroidHowtoProgram/tabid/3634/Default.aspx

Memleketimize gelmiyor diye biliyorum, netten sipariş edebilirsin.

Herkesin öğrenme şekli farklıdır :) Ben kitapların gereksiz vakit kaybı olacağını düşünüyorum. Nette bir sürü konu anlatımlı videolar var. Daha kısa sürede daha hızlıca öğrenebiliyor insan. En azından bu bende böyle...
 

osmandincer

Öğrenci
Katılım
8 Kasım 2011
Mesajlar
3
Reaksiyon puanı
0
Puanları
0
Sevgiler, saygılar sevgili ShiftDelete.net dostları..

Açıkçası gecenin bu saatinde eksiksiz satır satır yazılanları okudum. Dikkat ettiğim bir kaç nokta var. İzninizle burnumu sokup ortalığı karıştırmak istiyorum (mecazen)

1- Java Android'de SDK yapısının da etkisi ile VM ile çalışıyor demek yüzde dosan doğru. Yüzde on yanlış olur.
Şöyle ki; Java Android 'de sanal makine ile çalışmıyor gerçekte. Bir altyapı ve mimari birlikteliği içinde Dalvik'e gömülü bir arabirimi var. Buna aslında Java Pool diyorlar. Eski zamanlarda assembler ile kök kodlama yapılırken pool açılıp orada bellek devinimi sağlanır ve olmadık exception (hata) nedeniyle aksamalar engellenirdi.
Hatta bunu C++ ile yazılan Windows'un kendi alt yapısında özellikle de XP de mavi ekran aldığınızda çıkan 'undefined address pool range' saçma sapan hatalarının altındakileri incelerken de defalarca görebilirsiniz. Vista da toparlayıp Windows 7 de adam gibi handle etmeyi öğrendiler :)

2 - Java aslında zaten Android yapısına girerken daha çok object oriented olmuştur. Ancak dediğim gibi bu havuzlama ortamından dolayı kendi Java Environmentinde çalıştığından (denenmiştir) %8 - %11 arası (bileşene göre) hızından kaybetmektedir. Ayrıca Android cihazların bellek kapasitesine bağlı olarak adresleme tekniği değişmektedir. Aynı durum Android'e C++ ile kod yazacaksanız eğer aşırı sık bir derleme ve test betiği üzerinde uğraşacağınız anlamına gelir ki bu yalayıp yutmayı geçtim ileri seviyede C'nin piri olmayı gerektirir.

3 - C++ ile Android'e program yazmak niyetiniz varsa kendinize yapacağınız işe uygun bir çekirdek oluşturup bu çekrdekten pek çıkmadan ve fazla sağa sola bulaşmadan fonksiyonlarınızı oturtun ve her işlediğiniz kısımı (tamamlanan her özelliği) tam olarak compile edip Android üzerinde hem bir kaç farklı özellikle sanal makinalarda hem de doğrudan cihazlarda deneyin.
Bunun nedenlerini üstte aslında anlattım. Ancak Android için kodlamanın en kolay yollarından birisi Java üzerinde çalışan ve bir çok Java eklentisi ve özelliğini yanında hazır getiren App Inventor (Mit tarafından sağlanan çok kapsamlı olduğunu iddia edemeyeceğim ama çok rahat kullanımlı bir Java altyapı sunumu)

Adres olarak http://beta.appinventor.mit.edu/about/moreinfo/ adresini verebilirim. Bir inceleyip değerlendirin hatta bir şeyler yapıp deneyin derim.

Ben C#, VB.NET, C++ gibi dillerle yaptığım farklı farklı ve veritabanı kullanan programların verilerini değerlendiren ve raporlayan ufak tefek aracıları bununla yapıyorum ama yazdığım saate bakarsanız anlayabileceğiniz gibi çok geniş zamanlar bulup burada detaylı anlatma olanağı bulabileceğimi sanmıyorum.

Özellikle söyleyeyim, eğerki bu işi ciddiye almak niyetindeyseniz ve başlangıçtaysanız daha Android'e fazla bulaşmayın. Masa üstü yazılımda iyice gelişip sonra Android kısmına gelin derim. Çünkü Android her yeni SDK ile ciddi şekilde değişmekte ve gelişmekte. Başlamak için değil uzmanlığını pekiştirip olmadık işlere girmek için iyi bir ortam.

Buna illa gireceğim diyorsanız çok iyi ingilizce, sağlam altyapısı olan birilerinin yazdığı kitaplar, etkin bir internet araştırması ve çook çok vakit gerekli olduğunu kafanıza yazın. C++ ile başlamak en doğru yoldur. Java da C++ mantığıyla kodlama yapıldığı için onu öğrenirken daha az inlersiniz.. Yoksa Java macera değil kâbus olacaktır.

{ end by Dincer }
 

annttiigs

Profesör
Katılım
7 Şubat 2007
Mesajlar
2,589
Reaksiyon puanı
24
Puanları
218
Kusura bakmayın kesinlikle sizin yorumunuza bişi demiyorum, yanlış anlaşılmasın. Ben sadece C++'ın ne kadar kuvvetli ama bir o kadar da sıkıntılı (herşeyi kendiniz düşünmek zorundasınız), Java'nın ise ne kadar developer dostu ama bir o kadar da performanssız (C++'a nazaran) olduğuna değinmek istemiştim..
Kanıt olarak ben ne söylersem söyliyim siz karşı bir tez bulacaksınız nasılsa. Bu yüzden aynı projeyi hem C++ ile hem de Java ile yazarak görebilirsiniz..
ben cpp'de de java'da da c'de vb'de de yazdım. kesinlikle cpp daha hızlıdır. ancak %30 diye bir sayı verdiniz mi ben bunu merak ederim nereden çıktı diye. yoksa cpp'nin javadan hızlı olduğu ideal şartlarda aşikardır. maksat açık bulmak değil doğruyu bulmak ;)
 

kamildoan

Öğrenci
Katılım
5 Mart 2011
Mesajlar
46
Reaksiyon puanı
1
Puanları
0
Arkadaşlar sizin atladığınız bir konu var. Androidde hiç java bilmeden c++ ile program yazamazsınız. JNI kütüphanelerini kullanabilmek için java bilginizin olması gerekir. Ayrıca standart c++ kütüphanesini bilmeniz yetmez c++ a çok hakim olmanız gerekir. Ayrıca ndk ile ilgili bırakın türkçe kaynağı doğru düzgün ingilizce kaynak bile yok. Bu işe yeni başlayacak birinin kesinlikle harcı değil ndk ile android programlamak. O nedenle başlangıç seviyesindeki kişiler için en iyi tercih java olacaktır.
 
S

SDN Okuru

SDN Okuru
Sonucu ve özeti açıklıyorum;
Android programlamaya girecek olan arkadaşın macerası
başlamadan bitti.
bidahada buralara uğramaz!
 

rby21

Öğrenci
Katılım
15 Eylül 2012
Mesajlar
11
Reaksiyon puanı
2
Puanları
0
Selam beyler doğrumu anlamışım ?
1) C++ ile yazılan yazılım javaya göre daha iyi performans gösterir.
2) C++, javadan daha zordur.
3) Java bebek oyuncağıdır :D (c++ a göre)
4) C++ ile başlamak bizim için daha doğru olur.
5) C++ ta uygulama yazmak için pro olmamız gerekir .

özetledim doğrumu :D (anladıklarım) Bende programlama okuyorumda bilgim olsun diye soruyorum :D
 

annttiigs

Profesör
Katılım
7 Şubat 2007
Mesajlar
2,589
Reaksiyon puanı
24
Puanları
218
C++ ( hatta c ) "programlamaya" başlamak için uygun olabilir.
Java bebek oyuncağı değildir. OOP kullanmadığınızda basit data yapılarını bilmek kaydı ile her dil aşağı yukarı bebek oyuncağıdır.
 

kamildoan

Öğrenci
Katılım
5 Mart 2011
Mesajlar
46
Reaksiyon puanı
1
Puanları
0
Selam beyler doğrumu anlamışım ?
1) C++ ile yazılan yazılım javaya göre daha iyi performans gösterir.
2) C++, javadan daha zordur.
3) Java bebek oyuncağıdır :D (c++ a göre)
4) C++ ile başlamak bizim için daha doğru olur.
5) C++ ta uygulama yazmak için pro olmamız gerekir .

özetledim doğrumu :D (anladıklarım) Bende programlama okuyorumda bilgim olsun diye soruyorum :D

Öncelikle şunu söylemeliyim ilk defa bir programlama dilini öğreniyorsanız tüm diller size zor gelecektir. Benim tavsiyem çok fazla kafanıza takmayın c mi java mı veya başka bir dil mi diye birini öğrenin. Zaten programlama dillerinin mantığı hep aynıdır. Bir programlama dili öğrendikten sonra yeni bir dil öğrenmek gerçekten çok kolay olacaktır. Sizin kafanıza takmanız gereken şey nasıl algoritma geliştirmede uzmanlaşacağınız. İyi programlar yazmak istiyorsanız problem çözme yeteneğinizin çok iyi olması gerek. Programlama dili öğrenmek emin olun işin en kolay kısmı, asıl mesele programlama dilini kullanabilmek. Yani işin özü sadece c++ da değil kullanacağınız tüm dilleri iyi kavramanız gerekir. Aksi takdirde ekrana "Hello World" yazdırmanın ötesine geçmezsiniz.
 
S

SDN Okuru

SDN Okuru
Ben de lisede sözel bölümü okumuş sonradan Türkçe Öğretmenliği kazanmış aşırı bilgisayar meraklısı biriyim. Defalarca programlama öğrenmeye çalıştım ama olmadı. Delphi, c++, c#, java, android... Kamil abinin dediği gibi "merhaba dünya" yazdırmaktan ileri gidemedim. Kafamda güzel projelerim de var ama matematik olmadan bu işler olmuyor. daha doğrusu matematik kafası olmadan program yazmak neredeyse imkansız.
İyi program yazan arkadaşlarla yeni program fikirlerimi paylaşabilirim ve programa veri girişinde çok yardımcı olabilirim. tabi fifti fifti ortaklık kaydı ile. :)
 
S

SDN Okuru

SDN Okuru
watch?v=It8xPqkKxis sanırım bu vide java c ve c++ hızları arasındaki farkı açıklıyor.
 
S

SDN Okuru

SDN Okuru
Android programlamayı video çekimi yaparak anlatıcam ama nasıl birşey yapmalıyım neler anlatmalıyım yardımcı olursanız çok sevinirim
 
S

SDN Okuru

SDN Okuru
Her şey çok iyi anlatılmış fakat kısa bir özet geçecek olursak. Android için ya da ios için program yazmak istiyorsak. %80-90 java bilmek ve öğrenmek gerekir doğru mu anlamışım. yani bilmeyen birisi java öğrenmeye başlamalıdır diyebilir miyiz.
 
Üst