Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4.5/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
TurboCocoa
#1
Merhaba. Mart ayından piyasaya beta versiyası ile sürülen TurboCocoa isimli Delphi için kullanışlı bir araç paylaşmak istiyorum. Araç vasıtasıyla iOS/macOS/Android için native yazılım üretmek mümkün oluyor. FireMonkey yaptığınız uygulama çok kullanıcı sıkıntı yaşıyor. Tasarım, boyut siyah ekran ve s. Araç kısaca anlatırsam delphi kodlayıp tasarımı ios ve macos için XCode, android için Android Studio kullanılıyor.

Tanıtım videosu:






Sistem gereksimleri:

Delphi XE8 ve üstü
macOS 10.9
XCode 7 ve üstü
Android Studio 1.5 ve üstü



İndirip test etmek için:

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#2
Güzel bir araca benziyor. Fiyatıda uygun duruyor. Çalışma mantığı nedir? Delphi kodları hedef platformun native diline mi dönüştürüp derleniyor?
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla
#3
(15-11-2016, Saat: 23:21)engerex Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlGüzel bir araca benziyor. Fiyatıda uygun duruyor. Çalışma mantığı nedir? Delphi kodları hedef platformun native diline mi dönüştürüp derleniyor?

İyi akşamlar. Evet fiyat iyi. Ama açık kaynakmı bilemiyorum o fiyata. Ben trial kurdum testler yapacağım bakalım ne oluyor. FireMonkey zaten native derliyor ama 100% değil. Android için ben ilk delphide uygulama yaptım baktım baya sıkıntı veriyor ve her akla gelen bir bileşen paralı fiyatda çok fazla. Demosu denedim yetersiz oldu o yüzden java ile yazdım. Bu eklenti size tasarımı kendi idesinde kodlamayı delphiyle yapmak şansını veriyor. Buda baya fark yaratıyor. İster boyut isterse hız konusunda. Delphi görsel olmayan bileşenlerinden şimdilik idhttp test etdim sorunsuz çalışıyor. Trial indirip varsa mac ve ios denemeleri yapıp sonuç bildiriseniz çok makbule geçer satın almak isteyenler için. Android tarafı olumlu. Tek proje geliştirmek kaldı onuda kismet olursa bakacağım.
WWW
Cevapla
#4
Kullanışlı bir araca benziyor. Teşekkürler
Cevapla
#5
(15-11-2016, Saat: 23:58)AliZairov Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol... FireMonkey zaten native derliyor ama 100% değil. ...

Native (yerli) geliştirme denilince akla ilk gelen Java ve Objective - C / Swift oluyor. Lakin Android tarafında uygulamalar direk makine koduna dönüşmeden ara katmanlardan geçerek makine koduna dönüşüyorlar. Bu da aslında Android Studio / Java'nın native olmadığını gösteriyor. Sadece mobil yazılımcılıkla beraber native kavramının değişmesinden kaynaklı olarak Android / Java'ya native deniyor. Hatta Android'de Java'nın performansı bir takım yerlerde yetersiz geldiği için NDK adlı araç çıkarılmış.
Bu yüzden aslında FireMonkey mobilde kodları direk olarak makine koduna derlediği için aslında asıl olarak native grubuna giriyor. Sadece bazı yerlerde (servisler, telefon arama vs. gibi) Java kodu çalıştırıyor. Bu durumda FireMonkey 100% native oluyor. Native olması demek sıkıntıları yok anlamına gelmiyor tabii ki. Misal GUI tarafı kötü çalışıyor ama tamamen native bir araç. Mobilde hibrit grubuna da sokamayız çünkü hibrit uygulamalar bir webview üzerinde çalışan HTML, CSS ve JS kodlarıdır.

Aracı tanıttığınız için teşekkürler. GUI tarafında platformun has GUI'sini kullanacağımız için GUI taraflı bir performans ve düzgünlük elde edeceğimiz belli. Aklıma takılan şey ise şu ki, Android tarafında XML ile deklaratif tasarım yaparsak bir sıkıntı yok lakin bazı yerlerde bildiğiniz gibi özgün tasarımlar yapmamız gerekebiliyor ve bunun için de farklı XML dosyaları hazırlayıp sonra da Java'da LayoutInflater sınıfı ile bu XML'leri kullanıyoruz. Peki bu araçta bu tür şeyler için Java mı kullanmamız gerekiyor?
Sanırım yine dönüp dolaşıp Android / Java ve iOS / Objective - C'ye geliyoruz Smile.
Cevapla
#6
Java python gibi script dillere göre native sayılır. Yada yarı native mi demeliyiz? Java derlenince Java Byte Code dönüştürülüyor. İşlemcilerde bu kodları çözümleyecek ayrı birimler oluyor.

JavaScript de adı üzerinde script ancak Chromium tabanlı tarayıcılar kodları makine diline dönüştürüyor ve buda inanılmaz hız sağlıyor.
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla
#7
(16-11-2016, Saat: 14:27)engerex Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlJava python gibi script dillere göre native sayılır. Yada yarı native mi demeliyiz? Java derlenince Java Byte Code dönüştürülüyor. İşlemcilerde bu kodları çözümleyecek ayrı birimler oluyor.

JavaScript de adı üzerinde script ancak Chromium tabanlı tarayıcılar kodları makine diline dönüştürüyor ve buda inanılmaz hız sağlıyor.

Byte Code'ları makine koduna çeviren işlemcilerdeki birimler değil, Java Virtual Machine (JVM)'dir. O yüzden Java uygulamalarının çalışması için sisteme JVM kurulmalıdır. Ama Android'deki Java işi JVM ile bağlantısız. Android'de Java Dalvik veya ART makineleriyle çalıştırılıyor. Python yorumlayıcısı ise kodun her satırını o anda makine koduna dönüştürüyor ve kodda bütüncül olarak iyileştirme yapılmıyor.
JavaScript de yorumlanarak çalışan bir dil (tarayıcılarda böyle). Tarayıcılar içinde bulunan JS yorumlayıcısı kodları istenilen şekilde yorumlayıp sonucu veriyor.

Mobil programlamada hibrit denilen programlama yapısı HTML + CSS + JS kodlarını Cordova gibi araçlarla bir webview içerisine gömüp sonra da bu webview'i paketleme şeklindedir. Yani bildiğimiz tarayıcılar üzerindeki web sayfaları gibi çalışıyor bu hibrit uygulamalar. Misal Android Studio'da ekrana bir webview yerleştirip sonra bunu tam ekran yaparak yazdığımız HTML + CSS + JS kodlarını bu webview'e yerleştirip apk'yı da cihazda denersek bir uygulama gibi çalıştığını görürüz. İşte hibrit bu mobil tarafında.

Lakin Qt, Xamarin, FireMonkey, React Native gibi araçlar bu şekilde çalışmadıkları için hibrit değiller, çapraz platform geliştirme araçlarıdır.

Mesela şu araçlar mobilde şu şekilde çalışıyorlar:
Qt ve FireMonkey: C++, Delphi kodları direk makine koduna derlenip sonra bu kodlar Android'de JNI mantığıyla kullanılıyorlar. iOS'de direk derleniyor.
Xamarin: Yazılan C# kodları Android'de JIT (Just In Time) mantığıyla derleniyor ki bu bazen performans kaybı oluşturabilir. iOS'de ise AoT (AHead of Time) olarak direk derleniyor.
Cevapla
#8
(16-11-2016, Saat: 15:09)İbrahim Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(16-11-2016, Saat: 14:27)engerex Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlJava python gibi script dillere göre native sayılır. Yada yarı native mi demeliyiz? Java derlenince Java Byte Code dönüştürülüyor. İşlemcilerde bu kodları çözümleyecek ayrı birimler oluyor.

JavaScript de adı üzerinde script ancak Chromium tabanlı tarayıcılar kodları makine diline dönüştürüyor ve buda inanılmaz hız sağlıyor.

Byte Code'ları makine koduna çeviren işlemcilerdeki birimler değil, Java Virtual Machine (JVM)'dir. O yüzden Java uygulamalarının çalışması için sisteme JVM kurulmalıdır. Ama Android'deki Java işi JVM ile bağlantısız. Android'de Java Dalvik veya ART makineleriyle çalıştırılıyor. Python yorumlayıcısı ise kodun her satırını o anda makine koduna dönüştürüyor ve kodda bütüncül olarak iyileştirme yapılmıyor.
JavaScript de yorumlanarak çalışan bir dil (tarayıcılarda böyle). Tarayıcılar içinde bulunan JS yorumlayıcısı kodları istenilen şekilde yorumlayıp sonucu veriyor.

Mobil programlamada hibrit denilen programlama yapısı HTML + CSS + JS kodlarını Cordova gibi araçlarla bir webview içerisine gömüp sonra da bu webview'i paketleme şeklindedir. Yani bildiğimiz tarayıcılar üzerindeki web sayfaları gibi çalışıyor bu hibrit uygulamalar. Misal Android Studio'da ekrana bir webview yerleştirip sonra bunu tam ekran yaparak yazdığımız HTML + CSS + JS kodlarını bu webview'e yerleştirip apk'yı da cihazda denersek bir uygulama gibi çalıştığını görürüz. İşte hibrit bu mobil tarafında.

Lakin Qt, Xamarin, FireMonkey, React Native gibi araçlar bu şekilde çalışmadıkları için hibrit değiller, çapraz platform geliştirme araçlarıdır.

Mesela şu araçlar mobilde şu şekilde çalışıyorlar:
Qt ve FireMonkey: C++, Delphi kodları direk makine koduna derlenip sonra bu kodlar Android'de JNI mantığıyla kullanılıyorlar. iOS'de direk derleniyor.
Xamarin: Yazılan C# kodları Android'de JIT (Just In Time) mantığıyla derleniyor ki bu bazen performans kaybı oluşturabilir. iOS'de ise AoT (AHead of Time) olarak direk derleniyor.

İşlemcinin java Byte Code yorumlaması masaüstünde sanırım yok ancak ARM işlemcilerde mevcut.
Zamanında bir test yaptım. Python ile aşağıdaki döngü 4 dakika sürüyor. Delphi ile karşılığı 1 saniye. Eğer makina kpduna çevirseydi böyle bir sonuç çıkmazdı. Çeviriyorsa bile bu kadar fark varsa bir önemi yok. Yada benim eksik yaptığım bir şeyler var.
import time
t = time.time()
b=0
for a in range(368435456):
  b=b+1
print (time.time()-t)

input()
JavaScript makine kodu için V8 JavaScript Engine bakabilirsiniz.
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla
#9
(16-11-2016, Saat: 15:33)engerex Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olİşlemcinin java Byte Code yorumlaması masaüstünde sanırım yok ancak ARM işlemcilerde mevcut.
Zamanında bir test yaptım. Python ile aşağıdaki döngü 4 dakika sürüyor. Delphi ile karşılığı 1 saniye. Eğer makina kpduna çevirseydi böyle bir sonuç çıkmazdı. Çeviriyorsa bile bu kadar fark varsa bir önemi yok. Yada benim eksik yaptığım bir şeyler var.
import time
t = time.time()
b=0
for a in range(368435456):
  b=b+1
print (time.time()-t)

input()
JavaScript makine kodu için V8 JavaScript Engine bakabilirsiniz.

Android'de Java'da yazılan kodlar masaüstünde çalıştığı şekilden farklı çalışır. Yani Android'de Java sadece dil düzeyinde kullanılır, JVM falan işin içine girmez. İşte Byte Code'u makine koduna derleme işlemini işlemciler değil JVM, ART, Dalvik dediğimiz ara katmanlar yapar:
800px-ART_view.png
Bir de hiçbir dili makine koduna bir şekilde dönüştürmeden çalıştıramazsınız. O verdiğiniz örnekten o şekilde sonuç almanızın sebebi Python'un kodları tek tek yorumlayıp tüm kodlarda bütüncül olarak bir iyileştirme yapamamasıdır. Delphi direk makine koduna derlendiği için kodların tümünde toptan bir iyileştirme yapabiliyor. Yani Delphi kodları hepsini derleme aşamasında okuyup gerekli iyileştirmeleri yapıyor ama Python dili kodları satır satır derlediği için toptan bir iyileştirme yapamıyor.
Cevapla
#10
(16-11-2016, Saat: 13:59)İbrahim Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(15-11-2016, Saat: 23:58)AliZairov Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol... FireMonkey zaten native derliyor ama 100% değil. ...

Native (yerli) geliştirme denilince akla ilk gelen Java ve Objective - C / Swift oluyor. Lakin Android tarafında uygulamalar direk makine koduna dönüşmeden ara katmanlardan geçerek makine koduna dönüşüyorlar. Bu da aslında Android Studio / Java'nın native olmadığını gösteriyor. Sadece mobil yazılımcılıkla beraber native kavramının değişmesinden kaynaklı olarak Android / Java'ya native deniyor. Hatta Android'de Java'nın performansı bir takım yerlerde yetersiz geldiği için NDK adlı araç çıkarılmış.
Bu yüzden aslında FireMonkey mobilde kodları direk olarak makine koduna derlediği için aslında asıl olarak native grubuna giriyor. Sadece bazı yerlerde (servisler, telefon arama vs. gibi) Java kodu çalıştırıyor. Bu durumda FireMonkey 100% native oluyor. Native olması demek sıkıntıları yok anlamına gelmiyor tabii ki. Misal GUI tarafı kötü çalışıyor ama tamamen native bir araç. Mobilde hibrit grubuna da sokamayız çünkü hibrit uygulamalar bir webview üzerinde çalışan HTML, CSS ve JS kodlarıdır.

Aracı tanıttığınız için teşekkürler. GUI tarafında platformun has GUI'sini kullanacağımız için GUI taraflı bir performans ve düzgünlük elde edeceğimiz belli. Aklıma takılan şey ise şu ki, Android tarafında XML ile deklaratif tasarım yaparsak bir sıkıntı yok lakin bazı yerlerde bildiğiniz gibi özgün tasarımlar yapmamız gerekebiliyor ve bunun için de farklı XML dosyaları hazırlayıp sonra da Java'da LayoutInflater sınıfı ile bu XML'leri kullanıyoruz. Peki bu araçta bu tür şeyler için Java mı kullanmamız gerekiyor?
Sanırım yine dönüp dolaşıp Android / Java ve iOS / Objective - C'ye geliyoruz Smile.

İyi akşamlar. Native 100% olmamasının sebebi tasarım ve kodların bir arada derlenmesi. Ama bu araçta tasarım kendi idesinde kodlamayı delphide yapılıyor. Sitede android için bu özellikler yazılı.

XML layouts: Native way to design UI/UX in Android Studio.
Java class subclassing: TurboCocoa allows subscall java classes like Activity or View.
Multy-activity: You can create applciation with multi-activity.
Thread: TurboCocoa applications work in the Java thread.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter





Konuyu Okuyanlar: 1 Ziyaretçi