Windows masaüstü uygulamaları için çalışma zamanı / dil seçerken dikkat edilmesi gereken faktörler nelerdir?


10

Kullanıcılarımın hepsinde Windows var. Bazıları Linux veya Mac kullanıyor, ancak yaparlarsa genellikle Mono, Wine, Parallels veya çift önyükleme gibi bir şey kullanabilirler.

Geliştirme ekibim (ben dahil) hem Java'da Swing uygulamaları hem de C #'da Windows Forms yazma konusunda geniş deneyime sahiptir. "Kapsamlı", her iki çalışma zamanında da üç uygulama geliştirip gönderdiğimiz anlamına gelir. Uygulamalar teknik analiz uygulamalarıdır, bu nedenle veritabanı etkileşimi hafiftir, ancak özel kullanıcı arayüzü ve veri kümesi boyutları üzerinde ağırdır.

Şu andan itibaren hangi platforma odaklanacağımız konusunda gerçekten karar vermek istediğimiz noktaya geliyoruz, çünkü her ikisini de desteklemek için bir yük haline geliyor (Swing'de yarım yıl boyunca çalışıyorsanız çok fazla güçlük çekiyorsunuz) Windows Forms'a ve diğer yollara alışmak) ve ekibimizdeki herkesin tüm uygulamalarımız üzerinde çalışabilmesini istiyoruz.

  • Windows Forms, tanınabilir Windows uygulamaları yapmak için genellikle daha az çalışma gerektirir. Java'da hiçbir kaplama ve özel kontrol yıllar içinde bunu çözmedi. Aynı zamanda, Swing uygulamalarını kullanamayan bir müşterimiz olmadı.
  • Java, kütüphaneler ve otomatik derleme araçları açısından çok daha zengin bir ekosisteme sahipti, ancak bu hızla değişiyor (Java düşmüyor, .NET'in yakaladığı daha fazla).
  • Çok platformun tercih edildiği nadir durumlarda Java .NET'i devirir. Mono harika, ama yine de Java'dan daha fazla iş.

.NET'i seçersek WPF'ye odaklanmaya başlayabiliriz, ancak F # kullanmaya başlayabiliriz. Java'yı seçersek, RCP'ye odaklanmaya başlayabiliriz, ancak Scala'yı kullanmaya başlayabiliriz.

Herkes benzer bir karar vermek zorunda mıydı? Eğer öyleyse, neydi ve sizi en çok etkileyen şey neydi? Kaçırdığım en büyük endişeler

(Lütfen dikkat: Programcılar hakkında benzer sorular var, zaten var, ama ya yapıcı değil ya da farklı bir açıdan.)


2
Okuma başlığından, soru başlığının "Bir Windows masaüstü uygulaması için çalışma zamanı / dil seçerken hangi faktörleri düşünmeliyim?" Olması gerektiğine inanıyorum. , sorunuzun karar verme yönüne daha fazla odaklanmak Bunu cevaplamak çok daha kolay ve "Ne kullanmalıyım?"
Spoike

@Spoike Harika bir nokta, başlığı güncelledim (biraz daha kısa yaptım).
Deckard

1
Bu bağlantının Windows'un geleceği hakkında bir şeyleri olabilir, bu sizin için çok önemlidir IMHO- zdnet.com/blog/microsoft/…
Gulshan

Mac kullanıcılarını Wine yüklemeye ve bir Windows uygulaması çalıştırmaya zorlamak, onlara işkence yapmakla aynı şeydir.
sağ kanat

Yanıtlar:


7

JNI üzerinden Java (Swing) artı bazı yerli parçalar için gittik. Çok platformluluk için ticari talep bugün marjinal olsa da, durum 5 yıl içinde farklı olabilir ve uygulamanın (bilimsel bir ölçüm uygulaması) yaşam döngüsü 10 yıldan fazla olacak (bugün hala kullanılan C ++ selefi, 1991 tarihli kaynak dosyalar). Yazdığınız gibi, Java, Windows dışındaki ortamlarda .NET'i yener ve Windows'tan geçiş yapmamız gerekirse, bazı yerel parçaları yeniden derleme, belki de GUI görünümünün ince ayarını yapma ve bunu kontrol etme meselesi herşey çalışıyor.

Yalnızca Windows olacağınızdan eminseniz ve uygulamanız sadece birkaç yıl yaşayacaksa, .NET tercih edilebilir - çünkü yerel bir uygulama gibi görünür ve davranır. Ancak uzun vadeli bir yatırım olarak Java'ya daha fazla güveniyorum. Salıncak mükemmelden biraz daha az görünebilir, başlatma süresi daha uzun olabilir, çok platformlu soyutlama katmanı nedeniyle her şey biraz alt optimaldir, ancak en azından "sadece çalışır".


2
Bir .NET uygulaması Java'dan daha çok yerel bir Windows uygulamasıdır?
Rei Miyasaka

@Rei: .NET çerçevesinin yalnızca Windows tarafından kullanılabilmesi. Tabii, mono var, ama her zaman geride kalıyor ve şu anda geleceği belirsiz.
Tamás Szelei

1
@ Tamás Bu tamamen farklı ve tesadüfi bir mesele. .Exes içinde "Bu program DOS modunda çalıştırılamaz." Yazdıran ilk birkaç bayt kod dışında, program yine de tamamen bayt kodudur. Bir Java kitaplığı, uygulama eksikliği nedeniyle tersi doğru olmasa bile, .NET için olduğu kadar Windows için de yereldir.
Rei Miyasaka

4

Dikkate almak isteyebileceğiniz bir şey, Java kodunu bir .NET dünyasında kullanmanıza izin veren IKVM projesidir. Daha sonra bir Java arka ucunun avantajlarından yararlanabilirsiniz, ancak - benim anlayışımla - Swing veya WinForms'da ince bir ön katmana sahip olabilirsiniz.

http://www.ikvm.net/

Başkalarının bunu hantal .NET sürümünü kullanmak zorunda kalmadan .NET'ten Java ile yazılmış açık kaynaklı bir bağlantı kitaplığı kullanmak için kullandığını duydum.


3

MSDN'de sizin için yararlı olabilecek bir kaynak var: http://msdn.microsoft.com/en-us/gg715299.aspx .

Sayfanın alt kısmına giderseniz, Java ve .NET'i kavramsal olarak karşılaştıran bir dizi teknik inceleme bulacaksınız. Tabii ki MSDN'de olduğundan .NET'e karşı önyargılı, ancak kaynaklar hala oldukça kullanışlı.


1

Bu konuda da biraz düşündüm ve cevabın projenin türüne ve bu konuda ne öngörebileceğinize bağlı olduğunu gördüm.

Bazen, tüm platformlara hizmet vermek için One Codebase oluşturmak iyi bir şeydir - daha az genel kodla bir miktar UI tutarlılığı elde edersiniz. Bence avantajları ve dezavantajları açık, bu yüzden bunu atlayacağım.

Doğal olarak yazılmış 2 kod tabanına sahip olmanın daha iyi olduğu zamanlar vardır. Örneğin, uygulamanızı WPF'de yazmak .NET için zarifse ve örneğin Cocoa Mac OS için zarifse, sonuçta ortaya çıkan kod aslında Java veya Mono ( WPF). Bu durumda, belki daha az kod ile iyi sonuçlar alır.

Son bir nokta, belki de uygulamanızı HTML5 uygulaması veya hatta bir Chrome uzantısı olarak yapmaktır, ancak bu alanın çok solu olabilir.


1

Silverlight'ı düşündün mü ? Ayrıca Windows Masaüstü uygulaması (SL4 + 'dan) oluşturmak ve Mac'te iyi çalışmak için iyi bir seçim olabilir.


SL neredeyse öldü ..
klm_

Microsoft öyle düşünmüyor. Şahsen html5 web uygulaması için ilk seçenek olduğunu düşünüyorum ama istemci tarafı SL iyi bir teknoloji olabilir.
ADIMO

W5O tarafından desteklendiği için HTML5'i de tercih ederim. Silverlight HTML5 ile rekabet halinde ve bir niş ölmezse öleceğini düşünüyorum.
klm_

1

Tam zamanlı bir Java geliştiricisi olarak, platformlar arası uyumluluk şaşırtıcı olsa da, her yerel entegrasyonun cehennem olduğunu söyleyebilirim .

Her zaman bu konuda birçok sorun yaşadım ve bazen başarısız oldum. İhtiyacınız olmayabilir, ancak bazen tökezlerim ve genellikle acıtır.

  • COM ile entegrasyon acıdır ve COM + bazen imkansızdır (Windows Tablet API ile çalışmayı denemek için haftalar boşa harcanır).
  • Donanım etkileşimi zarar verebilir. Bazen API yalnızca bir platformda kullanılabilir (örn. Kamera / tarayıcı entegrasyonu).
  • Yerel uygulamalarla etkileşim de zarar verebilir. COM acısından bahsetmiş miydim? Eh, (aslında kullandığımız) başka bir yol da MapPoint veya bazı tescilli haritalama uygulaması gibi bir Windows uygulaması başlatan ve veri ile besleyen VBS komut dosyaları oluşturmak ve yürütmekti.
  • Kurulum ve masaüstü entegrasyonu (kısayollar, kaldırıcı, başlat menüsü) de zarar verebilir. Web Start çok güvenilmez. Alternatifler pahalıya mal olur veya bazı özellikleri (güncelleme dağıtımı gibi) yoktur.

Beni yanlış anlamayın. Ben bir Java geliştiricisiyim ve bunu alevlendirmek istemiyorum. Sadece yukarıdakilerden herhangi birine ihtiyacınız olduğundan şüphelenirseniz, yaralanabileceğini ve .net ile daha iyi olabileceğinizi söylüyorum . En azından dikkate almanız gereken bir argüman.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.