Java C # ile yakalayacak mı? [kapalı]


17

Bugün hangi C # veya Java dilinin çalışmamın daha iyi olacağını soran bir soru yayınladım. Bazı harika cevaplarım oldu. Ortaya çıkan bir şey, belki de Java'nın şimdi C # 'ın arkasında yeni özelliklerle olmasıydı. Bazı web bağlantıları gördüm ve en C # vardı ve ne java yoktu dikkat çekti.

Hepinize sorum şu: Java tekrar C # ile yakalayacak mı? Ve eğer bir tahminde bulunacak olsaydınız, 5 yıl içinde nerede dururdu. Şimdi eksik olan her şeye sahip olacak mıydı? Java 7'ye ne dersiniz?


7
-1, varsayımsal ve varsayımsal. Başlık "Java C # 'ın arkasında mı ve öyleyse nasıl yakalanabilir?" Olarak değiştirilirse +1 olarak değişir mi?
Nicole

2
Java ve C #, Şemayı yakalayacak mı? İsimsiz birinci sınıf fonksiyonları, kapanışları ve devamları aldığınızda bana haber verin.
dietbuddha

5
@dietbuddha: Kodumu 'larla doldurmamayı tercih ederim ), çok teşekkür ederim.
Josh K

1
@JoshK ile doldurmayı tercih edersiniz; ve doğru? LISP çok fazla parantez kullanıyor gibi görünüyor çünkü her fonksiyon onları kullanıyor ve içinde çok fazla fonksiyon barındırıyorsunuz.
YuriAlbuquerque

Yanıtlar:


32

Dil özellikleri, Java ve C # işaretini yapan şeyin çok küçük bir parçasıdır. Sonuçta bunlar daha büyük J2EE ve .NET ekosistemlerinin parçalarıdır.

Her ikisinin de güçlü yanları var ve önümüzdeki 5 yıl içinde büyüyecekler.


19
+1 "Dil özellikleri Java ve C #
işaretini

1
Evet, API'lar ve kütüphaneler birçok açıdan çok daha önemlidir.
Michael K

2
Anlaşıldı, ancak sorular ekosistemle değil dil ile ilgili;)
Philippe

1
Çok kısa cevaplarda +1 oylama yapmaktan gerçekten nefret ediyorum, ama burada bir şey yapıyorsunuz. Bu cevabı genişlettiğinizi görmek isteriz.
Nicole

3
Sorular şöyle der: "hangi C # dili veya Java benim için çalışmam daha iyi olurdu" ve "5 yıl içinde nerede duracaktı" her iki yön de dile göre ekosisteme daha fazla güveniyor.
Verma

16

Oracle resme girene kadar evet diyebilirim . Bu üzücü, çünkü Java ve C # 'ın son altı yıldır sahip olduğu özelliklerde bir sıçrama yaptım.


2
Sizce Oracle neden Java'yı sabote edecek?

2
Ben sadece kurum kültürünün Sun'ın özellikleri birleştirirken aynı çevikliğe sahip olduğunu düşünmüyorum.
Jesse C. Slicer

8
@Glenn, Oracle'a karşı Google davası bana açık kaynak almadıklarını ve büyük şirketlerin gelecekteki gelişmeler için Java'yı seçme olasılığının düşük olduğunu gösteriyor. groklaw.net/staticpages/index.php?page=OracleGoogle
Tangurena

Oracle tam olarak "Java'yı vidalamıyor", ancak JVM. Şu anda BEA ve JR için HotSpot'tan JRockit'i edindikleri iki JVM uygulamasını birleştirme projeleri var. İşteyken Da Vinci Makine projesini tamamen terk ettiler.
vartec

2
Oracle'a karıştım. Android kıyafeti bir çeşit kapanmadır, ancak Linux çekirdeğine katkıda bulunurlar ve Btrfs dosya sisteminin birincil geliştiricileri. Oracle, açık kaynağı Microsoft'tan daha iyi "alıyor" gibi görünüyor, ancak bu fazla bir şey söylemiyor.
jonescb

6

Bir dil olarak, Java'yı, yenilikçiliği önemli bir oranda eklemek için genişletmiyorum, çünkü öncelikle açık kaynak topluluğunda bulunanların Scala, Clojure gibi daha yeni JVM dillerine odaklanma olasılığı daha yüksek. Groovy, JRuby ve JPython.

Ayrıca, Java'nın geriye dönük uyumluluk taahhüdü, dil özelliklerinin eklenmesinin, dilin önceki günlerinden daha zor olduğu anlamına gelir.


5

Buradaki büyük soru işareti Oracle. Sun, Java için son yarım on yıl içinde işleri gerçekten yavaşlattı. Java topluluğundaki birçok kişinin umudu, Sun'ın Java'yı kapatması veya çok fazla kaynak ve çaba harcayacak birine satmasıydı. Oracle kesinlikle bunu yapabilirken, kendi çıkarları olan birçok gruba sahip büyük bir şirket. Benim tahminim ve bu sadece bir tahmin, Oracle'ın Java'nın durgunlaşmasına ve çoğunlukla patent davaları için bir araç olarak kullanmasına izin vereceğidir.

Belki de büyük miktarda parayla Google'a satacaklar ve herkes mutlu olacak. Mühendisler ve yazılım tasarımcıları yerine yönetim kurulu ve avukatların elinde.

İşlerin iyi tarafında, iyileştirmeler olmasa bile, Java iyi bir dildir ve çevresinde güzel bir ekosisteme sahiptir. Ben şahsen C # ve .net dünyasını tercih ederken, Java hala mükemmel bir seçim. İleride, zaman gösterecek, ancak şu an itibariyle Java hiç de fena değil. (Tarih ve saat kütüphaneleri hariç ... vay, hiç çirkin ve dağınık olanlar)


1
Orada üçüncü parti kütüphaneleri artık tarih / saat sorunlarını aşmak için.
Michael K

1
Oracle, PL / SQL ile birlikte veritabanında en az 10g olarak yaşayan programlar için dil olarak kullanıyordu. Oracle Java'yı yoğun bir şekilde kullanıyor. Bunun Java'yı sevdiğim bir yöne götürecekleri anlamına gelip gelmediği tartışmalıdır, ancak onu öldürmeyeceklerdir.
David Thornley

4

Yakalayacak hiçbir şey yok, bu yüzden soru mantıklı değil.

Java, C # 'ı tam olarak çoğaltmadığı için, bir şekilde "aşağı" olduğu anlamına gelmez, sadece farklıdır. C # ne zaman Cobol ile "yakalamak" sormak olabilir.


23
Kabul etmiyorum. C # ve Java birçok yönden benzerdir, C # ve COBOL'dan çok daha fazladır. Bir gün "C # Java ne olması gerektiğini" okurken hatırlıyorum. Özetlemek gerekirse, C # ve Java'nın doğrudan rekabet ettiğine inanıyorum ve her ikisiyle de çalışarak Java'da çok fazla C # özelliği olduğunu söylemeliyim, ancak tam
Philippe

C # veya Java kullanabileceğiniz durumlar buldunuz mu? Yani geliştiricinin seçim yapabileceği durumlar. Genellikle bir dükkanın tercihleri ​​/ önyargıları / önyargıları olur ve aynı ekosistemdeki diller arasında seçim yapılır. Java ve Scala arasında veya C # ve F # arasında
Verma

2
C # 'ın verdiği tüm tasarım kararına katılmıyorum, ancak Java gibi, bilinçli olarak C ++ değiştirme yapmaya karar verdiler ve onlardan önceki Java örneği ile, Java'nın bıraktığı bazı kritik özellikleri kasten eklediler. Yani bu özelliklerin iyi olduğunu düşünüyorsanız, Java C # ile "yakalamak" gerekir, Özellikle, nesneye yönelik her şeyin şişirilmiş OLMAMASI için satır içi nesneler oluşturma yeteneği ve ben const düşünüyorum. Delegeler, kütüphane veri yapısı olarak oluşturulamayacakları için oluşturdukları yeni bir özelliktir. Her ikisi de C ++ ile yakalamak zorunda söyleyebilirim!
Dov

@Philippe, karşı örneğine kapılma. Kolayca "C # Java ile ne zaman yakalanacak?" Amacı hala Java'nın C # 'ın arkasında nesnel bir neden olmadığını gösteriyor; hepsi kişisel tercih.
jonescb

Kimse çoğaltma hakkında konuşmuyor, ancak C #, Java'nın ŞİMDİ uygulamayı uygulamayı düşündüğü bazı temel özelliklere sahip (çirkin bir nesne uygulamasıyla öykülenmiş lambdalar gibi).
YuriAlbuquerque

4

C # veya Java'nın diğerinin önünde olup olmadığı sorusu tartışmaya açık, ama birinin veya diğerinin dil özelliklerine odaklanmak yerine, bir dili geliştirmeyle ilgili olanlara odaklanmayı tercih ederim . Kimsenin tartışacağını sanmıyorum bir gerçek: Java C # daha eski.

Bir dilin çalışma şeklini değiştirme ile ilgili sorunlar:

  1. Geriye dönük uyumluluğu bozursanız birçok geliştiriciyi kızdırırsınız
  2. Geliştiricilerinizi kızdırırsanız, onları daha iyi destekleyen başka bir dile geçer. Bu nedenle, dil ile çalışmaya devam etmek için hiçbir neden yoktur.
  3. Java, dili pazara sunma baskısı ile tasarım kararlarını erkenden aldı. Umut geri dönüp boşlukları doldurmaktı. Bu kararlar hala dili rahatsız ediyor çünkü koruyucular ilk noktayı ihlal etmek istemiyorlar.
  4. Java birçok yeni bölgeyi alevlendirdi ve bir kez ve her şey için çöp toplanan bir dilin ciddiye alınabileceğini kanıtladı - ve çoğu insan için yeterince iyi performans gösterdi.
  5. C # daha sonra geldi ve Java'nın tökezlediği birçok ders öğrendi - böylece Java'nın 3. noktadan dolayı sahip olduğu bazı teknik sınırlamalardan kaçınabildiler.
  6. Yeni dil özellikleri gerçek bir sorunu mantıklı bir şekilde çözmelidir. Her dil özelliği, eklemeye çalıştığınız dil bağlamında anlamlı değildir. Bu nedenle, benzerliklerine rağmen, Java ve C # farklı diller olmaya devam edecektir.

Peki, C #, Java'dan daha fazla dil özelliğine sahip mi? Bence de. Yararlı mı? Bence de. Bu C # Java daha iyi veya daha olgun olduğu anlamına mı geliyor? Buna katılmıyorum. Farklı, sade ve basit. Java hiçbir zaman C # 'ın tüm özelliklerine sahip olmayacaktır çünkü C # hiçbir zaman tüm Java özelliklerine sahip olmayacaktır.

Java'nın özelliklerinden biri olan, Windows'ta bir program yazma ve Unix veya Mac'e dağıtma yeteneği, hiçbir zaman doğrudan Microsoft'un desteği ile gerçekleşmez. Neden soruyorsun? Microsoft kötü olduğu için değil (bu doğru olsun ya da olmasın ben gerçekten umurumda değil). Çünkü Sun'ın hiç yapmadığı bir ders öğrendiler: herhangi bir yerde çalıştırıldığında yazmak işletim sistemlerini ve donanımı metalaştırır. İşletim sisteminizin satışlarından para kazanmayı önemsiyorsanız, takas yapmayı ve hala bir uygulama çalışmasını önemsiz hale getirmek istemezsiniz. Bunu yaptıysanız, her zaman daha ucuz seçenekler olduğu için işletim sisteminden kar edemezsiniz.


Mono'nun MS tarafından yönetilmemesi neden önemlidir? Mono gerçekten iyi çalışıyor. Bunu hafife alma.
Kugel

Mono'da bir kazma değildir, ancak tüm .NET API'leri doğrudan desteklenmez. İlerleme yaparken ve oldukça uzun bir yol katetmişken, özellikle masaüstü uygulamalarında sınırlamalar var. Mono'nun ne kadar yakın geldiğinden veya yasal olarak Winforms veya WPF'yi uygulamaya gelip gelemeyeceğinden emin değilim. Ancak, kesinlikle sunucu tarafı çalışması için, uyumlu olduğundan eminim. Son zamanlarda bakmadım.
Berin Loritsch

"Windows'da bir program yazma ve Unix veya Mac'te dağıtma yeteneği, doğrudan Microsoft'un desteği ile asla gerçekleşmeyecek" diye düşünüyorum şimdi
JoelFan

Cevabı yazdığım sırada değildi. Yani C # bir Microsoft bir çalışma zamanı ve Mac ve Unix üzerinde çalışan kütüphaneler yazdı? Mono, üzerinde çalışan bazı Microsoft geliştiricileri olsa da doğrudan Microsoft'tan gelmiyor. Linux için çalışan WPF üzerine kurulmuş bir masaüstü uygulaması hakkında hala şüphelerim var. Yalnızca sunucu tarafı iyi olabilir.
Berin Loritsch

1

Java gerçekten C veya C ++ 'dan daha fazla yeni "özelliklere" ihtiyaç duymaz. Nesneye yönelik geliştirme için iyi tasarlanmış bir dildir. Yapılabilecek ilaveler, çok çeşitli görevleri gerçekleştirmek için kitaplıklar oluşturmak içindir. Aynı şey C # için de geçerli - dilin daha fazla şey yapmasını sağlamak için özelliklerin çoğu ekleniyor. Şahsen bu özelliklerin çoğunun gerekli olmadığını düşünüyorum - donanım seviyesinde çalışmadığınız sürece OO'daki işaretçiler gerçekten çok kabarıktır (bu noktada C gibi bir şey kullanmak daha iyidir). Ayrıca, bir VM'de çalışmanın, imkansız olmasa da, donanıma doğrudan erişmeyi zorlaştıracağı düşünülmektedir.

Unix, bir şeyi çok iyi yapan modüller oluşturma eğilimini başlattı . Bence hem Java hem de C # özelliği sürünme biraz elden alıyor. Kolayca genişletilebilir bir çekirdek oluşturmak, daha çok bir çerçeve gibi olan çok amaçlı dev bir "dil" den daha iyidir. To bana , Java bu şart daha iyi C # daha uyuyor.


7
Uygun lambda içermeyen dil kullanılabilir bir dil değildir. Bu özellik Java'ya eklenirse, diğer argümanlarınızı kabul ediyorum. Bu olmadan, Java hiç genişletilemez, neredeyse hiç kullanılamaz.
SK-logic

2
@Craige Şahsen (görüş) Sytactical özelliklere sahip olmaktan hoşlanmıyorum. Dilin yolumdan çekilmesini istiyorum - çok az.
Michael K

1
@Michael - Sözdizimsel özelliklere sahip bir dil ile yolunuza çıkan bir dil arasındaki bağlantıyı kuramıyorum. Bir dilin özellikleri söylediği için, onları kullanmanız gerektiği anlamına gelmez. Örneğin C # 's getter ve setter yöntemlerini ele alalım. Zamanın% 90'ı, yüzlerce satırlık yedek kod yazmanızı sağlayacaktır. Yine de isterseniz kendi yazılarınızı yazabilirsiniz.
Mart'ta Craige

1
@Craige, dilin özellikleri varsa, araçlarınızın en azından onlar hakkında bilmesi gerekir. Java ekosisteminin gücü, tamamen dil minimalist sadeliği nedeniyle mümkün olan araçlarındadır.
SK-logic

1
@SK, lambda ile bir dilin kullanılamaz olduğunu nasıl söyleyebileceğinizi anlamıyorum. C'nin lambdaları yoktur ve C ++ onları C ++ 0x'e alır ve insanlar bu dilleri onlarca yıldır kullanıyor. Sadece zorlayıcı programlamayı geçersiz kılmayan işlevsel programlamayı tercih ettiğiniz için.
jonescb

1

C # 'nın eklediği özelliklerin çoğunda yanlış bir şey yoktur, ancak dili değiştirme oranı göz önüne alındığında, Mono'nun devam etmesini imkansız değilse bile bilinçli olarak zorlaştırırlar. Eğer öyleyse, o zaman ben C # konuşlayabileceği sistem aralığı açısından Java yakalamak için bekliyorum diyorum. Sadece Windows üzerinde çalıştırmak yeterli değildir.


0

Bir tartışma forumu başlatmayacağım, ama Java'nın C #'dan çok önce burada olduğunu düşünüyorum ve bu konuda C # daha sonra java bir çoğaltma gibi görünüyor.

Sorunuzu desteklemek için: Java ve C # farklı dillerdir, bu nedenle bunları yalnızca özelliklerine göre karşılaştıramazsınız. Java ile yapabilecekleriniz C # ve tersi yapamazsınız.

Sonunda bu bir Windows ve Linux konusu başlatmak gibidir.

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.