Gönderen Konu: Platformdan Bağımsız Görsel Uygulama Geliştirme  (Okunma sayısı 2058 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Selamlar öncelikle...
Arkadaşlar ben çapraz platform yani platforma bağlı olmayacağım bir GUI uygulama geliştirmek istiyorum. Yani yazacağım program hem Linux hem de Windows altında çalışıp görsel bir program olsun istiyorum. Bunun için bir çok araştırma yaptım ama şuanda bir çıkmaza girdim. Öncelikle çarpaz platform deyince akla ilk Java geliyor. Java'da da GUI programlama deyince JavaFX, SWT, AWT, Swing gibi bir çok kavramla karşılaştım. Bunların arasından da bir türlü çıkamadım. Hangisi gelecek vadediyor, hangisi yaygın kullanılıyor ve hangisi daha kullanışlı tam olarak bir cevap bulamadım.

Java dışında da C++ ile GUI programlama araştırmalarım oldu. Bunun sonucunda ise GTK+, Qt ve wxWidgets gibi kavramlarla karşılaştım. Bunlar hakkında da biraz araştırma yaptım ama bunların arasından da en kullanışlı, en yaygın ve en gelecek vadedeni kestiremedim.

Tabii bu söylediklerim dışında dil, kütüphane öneriniz varsa duymak isterim.
Dil, kütüphane seçimiyle çok zaman kaybetmek istemiyorum. Bu yüzden bilgisi olan arkadaşlar görüşlerini bildirirse mutlu olurum...

« Yanıtla #1 : »
@spero, Selamün Aleyküm.

Öncelikle verdiğin kriterler çok geniş bir alanı kapsıyor. Şu kriterleri vermelisin: Hangi dil ile yazılım geliştireceksin? Ne tür uygulamalar geliştireceksin?
Eğer dil fark etmez diyorsan masaüstü yazılımlar için Qt ve Gtk+ devasa araçlardır. Yani her istediğin görselliği yapabilirsin. Bu iki araç birçok dille kullanılabiliyor. Ana dilleri C / C++ olmasına rağmen Python, Ruby vs. dillerle de geliştirme yapabilirsin.

Ayrıntı vermek gerekirse Qt'un lisansları GPL, LGPL ve ticari lisans olmak üzere 3 tanedir. Gtk+'ın lisansı LGPL'dir. Gtk+ yalnızca bir GUI geliştirme aracıdır lakin Qt bir geliştirme çatısıdır (framework). Yani Qt ile GUI geliştirmenin dışında devasa kütüphanesi de vardır (bkz: http://doc.qt.io/qt-5/classes.html). Senin işine yaramaz belki, fakat Qt ile mobil ve gömülü sistemlere de yazılım geliştirebilirsin.

Eğer Java ile yazılım geliştireceksen senin de söylediğin GUI araçlarını kullanabilirsin fakat Java ne hikmetse sistemi çok zorluyor (bkz: Minecraft, Android Studio, Eclipse).

Bunun dışında hibrit dediğimiz masaüstü yazılımlar da yapabilirsin. Bu tür yazılımlar HTML5, CSS3 ve Javascript ile yazılıyor. Yani bildiğin web sitesi yapar gibi masaüstü yazılım yazıyorsun. Bunu yapabildiğin kütüphane Electron (https://electron.atom.io/). Bu kütüphane ile yapılan uygulamalara örnek olarak da Atom ve Visual Studio Code örnek verilebilir.

Bu arada Java her ne kadar çapraz platform olsa da işletim sistemine özel işler yapman gerektiğinde mecburen kodunu ayıracaksın :). Mesela Windows'ta kayıt defteriyle işin oldu, fakat kayıt defteri Linux'ta ve MacOS'ta yok :). Yani kodunu yine ayırman gerekecektir. Bu yüzden masaüstü için bence Java seçmenin bir anlamı kalmıyor.

« Yanıtla #2 : »
@spero, Eğer Java ile yazılım geliştireceksen senin de söylediğin GUI araçlarını kullanabilirsin fakat Java ne hikmetse sistemi çok zorluyor (bkz: Minecraft, Android Studio, Eclipse).

Çünkü java işletim sisteminden bağımsız çalışmak için sanal makine kullanıyor bu yüzden daha fazla kaynak tüketiyor.

« Yanıtla #3 : »
embercadero rad studio xe10. Delphi yada c++ ile bu işi çok kolay yaparsın. Sen özellikle sistem apisi kullanmadığın sürece ios,macos,windows,android,windows metro uygulamaları geliştirebilirsin. Kendi componentleri gayet iyi seviyede. Herkes delphinin öldüğünü sanarken aslında delphi bir dönem geriledikten sonra adeta küllerinden yeniden doğmuştur bu ide ile. Uygulama geliştrirken  Delphi ve C++ tamamen kendi frameworkünü kullanır. Yani işletim sistemine bağımlılık minimum seviyeye düşer. Denemeni tavsiye ederim.
<Developer/>

« Yanıtla #4 : »
embercadero rad studio xe10. Delphi yada c++ ile bu işi çok kolay yaparsın. Sen özellikle sistem apisi kullanmadığın sürece ios,macos,windows,android,windows metro uygulamaları geliştirebilirsin. Kendi componentleri gayet iyi seviyede. Herkes delphinin öldüğünü sanarken aslında delphi bir dönem geriledikten sonra adeta küllerinden yeniden doğmuştur bu ide ile. Uygulama geliştrirken  Delphi ve C++ tamamen kendi frameworkünü kullanır. Yani işletim sistemine bağımlılık minimum seviyeye düşer. Denemeni tavsiye ederim.
Selamün Aleyküm. Yalnız arkadaş Windows dışında Linux için de uygulama geliştirmek istiyormuş. Bildiğim kadarıyla Delphi / C++ Builder ile sadece Windows'a GUI kullanan yazılım geliştirebiliyoruz. Embarcadero Linux'a destek getirecekmiş fakat GUI değil, sadece konsol uygulaması yapabiliyormuşuz.

« Yanıtla #5 : »
@Limonata Aleyküm selam. Sağolasın, uzun uzun yazmışsın....

Yazdığım programı yaparken aynı zamanda o dili, kullanacağım frameworkü ve GUI programlamayı öğrenmeyi; bununla beraber de bir proje geliştirmeyi hedefliyorum. Bu yüzden dilin geleceği olursa uzun vadede işimi görür diye düşündüm.

Açıkçası C++ ve Java arasında kalmıştım. Java konusunda söylediklerinizi mantıklı buldum. Sanırım tercihim C++'dan yana olacak. Tabii halen Qt en iyi seçim mi olacak emin değilim.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 10 Mart 2017 - 20:19:54
@alicilin Linux üzerinde de sıkıntısız çalışıyor mu yani Limonata hocam yazmış da..

« Yanıtla #6 : »
@spero
Öncelikle Qt'un mu yoksa Gtk+'ın mı daha iyi olduğunu sen kendine kanıtlamalısın. Sana tavsiyem bu araçların dökümanlarına bak ve neler olduğunu gör. Sana en uygun olanı seçmelisin.

Ayrıca Delphi / C++ Builder seçersen Windows ortamında Rad Studio ile yazılım geliştirebilirsiniz, Windows'a GUI kullanan yazılımlar geliştirebilirsiniz lakin Linux'a GUI geliştiremezsiniz, sadece konsol üzerinde çalışan yazılımlar yazabilirsiniz. Ayrıca Lazarus / Free Pascal'a bakabilirsiniz.

« Yanıtla #7 : »
Pardon hocam ben linux kısmını atlamışım. Linux kısmı için embercadero tarafında bildiğim kadarıyla şu an için destek yok. Fakat linux ta FPC (free pascal compiler) ve lazarus (ide) ile linux için uygulama geliştirebiliyorsunuz. Hatta lazarusun delphi converter'i de var. Lazarusa bir nevi opensource delphi diyebiliriz. Ama tabi bu işi biraz uzatır ve zorlaştırır.
<Developer/>

« Yanıtla #8 : »
Java ile yola devam edecekseniz kesinlikle javafx 'i tavsiye ederim.

« Yanıtla #9 : »
@Limonata
Qt ile GTK+'ı özellikle araştıracağım. Teşekkür ederim.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : [time]11 Mart 2017 - 13:34:55[/time]
@alicilin
Peki, sağolasın.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 11 Mart 2017 - 13:35:08
@AmigaMan
Peki neden JavaFX?

« Yanıtla #10 : »
Swing artık geliştirilmiyor. Sadece arada bir güncelleme alır alırsa.
Oracle JavaFX kullanın diyor.
Good morning and welcome to the Black Mesa Transit System. This automated train is provided for the security and convenience of the Black Mesa Research Facility personnel.

« Yanıtla #11 : »
@freeman
Peki amacım doğrultusunda C++ mı Java mı yoksa başka bir dil mi diye sorsam size?

« Yanıtla #12 : »
Size bağlı aslında. İlerde ne yapmak istiyorsunuz ne tür projelerde çalışmak istiyorsanız ona göre öğrenin. Türkiye 'de C++ kullanan çok az firma var. Bunlarda genelde gömülü sistemlerde uğraşan yerler. Ve buralarda daha çok elektronik mühendisleri çalşıyor.

Yok sadece öğrenme maksatlı ise fark etmez. İlla ki ikisi de faydalı olur.
Good morning and welcome to the Black Mesa Transit System. This automated train is provided for the security and convenience of the Black Mesa Research Facility personnel.

« Yanıtla #13 : »
@freeman
Şuanlık sadece öğrenme maksatlı ama profesyonelleşmek istiyorum bu alanda. C++'ın Türkiye'de az kullanılması onu bilenleri daha değerli kılmaz mı?

« Yanıtla #14 : »
@spero

merhaba python biliyorsanız birlikte bişiler yaparız diye umuyorum tabi meraknıız yerindeyse :D
Kod Yazmak Bir Şiirdir.

« Yanıtla #15 : »
@harun252525
Maalesef Python bilmiyorum, öğrenmeyi çok istiyorum ama zaman yetersizliğinden muzdaribim..  :(

« Yanıtla #16 : »
@spero

peki kaçtane programlama dili biliyorsunuz ?
Kod Yazmak Bir Şiirdir.

« Yanıtla #17 : »
@harun252525

Aslında öyle birden fazla dil falan bilmiyorum. Benim için dil araç olduğundan işimi görsün yeterli diye bakıyorum. C# kullanıyordum Windows tarafındayken. Linux'a geçince farklı bir şeyler denemek istedim. Bu da ya C/C++ ya Java ya da Python (Perl de hoşuma gitmiyor değil aslında  :D ) olacak gibi. Aslında bu dediklerimin hepsini öğrenmek istiyorum ama sırası nasıl olmalı kararsızım.

« Yanıtla #18 : »
@spero

öncelikle birçok kişi bu yanılgıya düşüyor evet python bilirsiniz c++ bilirsiniz ama asıl önemli nokta nedir biliyormusunuz o dilde kaçtane framework yani kütüphane biliyorsunuz ben C ve python biliyorum ama C dilinde çok az kütüphane biliyorum şuan neredeyse hiç işime yaramadı. bu yüzden python ile devam ediyorum çünki birçok library biliyorum yani diyeceğim bir dili biliyorsan ama o dilde çok az kütüphane biliyorsan pek işine yaramıyor. daha doğrusu hiç işine yaramıyor. he * tabi ki farklı bir bakış açısı katabilir mesela C yi öğrendikten sonra pc ye bakış açım çok değişti sadece bukadar buda önemli ama şuan neredeyse hiç C kullanmıyorum çünki C dili ile kernel seviyesinde uygulamalar yazılıyor ben sizin dediğiniz gibi GUİ seviyesinde uygulama yapmak istiyorum. eğer yeni dil öğrenmek istiyorsanız kesinlikle python derim çünki kolay olduğu için en kısa öğreneceğiniz dil budur ve kütüphaneleri olsun görsel uygulama olsun hepsi var. dediğim gibi çok dil bilmek marifet değil. mesela adamın biri tek dil biliyor ama o dil ile yaptığı efsane işler var. eğer sende bir uygulama yapmak istiyorsan tek bir dil seç ve onda ilerle ve bu uygulama görsel uygulama ise kesinlikle python derim kod yazması hızlı + hızlı öğrenme + ve çok rahat..

Edit: pythonun reklamını yapmıyorum yalnış anlamayın... zamandan muzdaripseniz kesinlikle python değilseniz kesinlikle java


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 12 Mart 2017 - 20:20:54
@spero

"Who controls your computer? Is it you or is it some big company that's really controlling it?" -Richard M. Stallman

bu lafınla Ubuntuya spywaremi diyorsun ? :D gönderme falan bu adamın ubuntu hakkında bir spyware videosunu izlemiştim aklıma oradan geldi
« Son Düzenleme: 12 Mart 2017 - 20:20:54 Gönderen: harun252525 »
Kod Yazmak Bir Şiirdir.

« Yanıtla #19 : »
@harun252525
Teşekkür ederim yazdıklarınız için. Haklısınız. Ben de bir alana yoğunlaşacağım. Onu da derinlemesine bir araştırmayla kararlaştırmayı düşünüyorum. Sağolun tekrardan.

O sözle Ubuntu'ya değil de Microsoft ve Apple'a gönderme yapıyorum.  ;D Tabii Stallman amca bu sözüyle kim(ler)e atıfta bulunmuştur, bilemiyorum. :D

« Yanıtla #20 : »
@spero

vatkiniz varsa java öğrenin ama pythondan zahmetli fakat C# bilmeniz kolaylaştırır

kararınızı python verirseniz arayın beni :D
Kod Yazmak Bir Şiirdir.

« Yanıtla #21 : »
@harun252525
Tamamdır, sağolasın.  :)

« Yanıtla #22 : »
Alıntı yapılan: spero
@freeman
Şuanlık sadece öğrenme maksatlı ama profesyonelleşmek istiyorum bu alanda. C++'ın Türkiye'de az kullanılması onu bilenleri daha değerli kılmaz mı?
Sorun şu ki Türkiye 'de bu dilin kullanım alanları çok kısıtlı. Türkiye ar-ge, teknoloji üretme ülkesi değil malesef. Türkiye 'de yazılım sektörünün %90 'ı kurumsal yazılımlar, web tabanlı yazılımlar falan kapsar. Özellikle kurumsal sektör pek yeniliğe açık bir alan değil. Bir sistem kurulur 10-15 yıl o sistem kullanılır, özellik eklenir güncelleme yapılır. Çok yoğun bir şekilde veritabanına okuma-yazma işlemleri yapılır.

Bu tip sistemler için C++ kullanmak zaten gereksiz. Bu dil ülkemizde daha çok elektronik sektöründe gömülü sistemlerde kullanılıyor. Kullanan yerler de belli: Aselsan, Havelsan gibi şirketler. Bunların çalışan profilleri de belli. Çoğunluğu elektronik mühendisi. Ülkemizde AAA+ kalitesinde oyun yapan da yok ki onlar kullansın. 

Yani durum böyle kabaca. Para kazanır mısınız onu da bilemem. Ülkemizde Delphi kullanarak para kazananlar halen var.
Çözüm risk alıp alamamakta.
Good morning and welcome to the Black Mesa Transit System. This automated train is provided for the security and convenience of the Black Mesa Research Facility personnel.