Java'nın yeri doldurulamaz beş özelliğini kontrol edin, mükemmel programlama dili yoktur

Yukarı tıklayın " CSDN "," En İyi Resmi Hesap "ı seçin

Teknik bilgiler hemen teslim edilir!

Ya C # ve Java dünyalarının en iyi özelliklerine aynı anda sahip olabilseydik?

Mükemmel bir programlama dili yok ve umarım bu noktada anlaşabiliriz. Yeni bir dilin geliştirilmesi, genellikle başka bir dilin eksikliklerinin üstesinden gelmek içindir ve bazı yönlerden daha sağlam olması kaçınılmazdır, ancak diğer yönlerde eksiklikler vardır.

Hem C # hem de Java, C / C ++ dilinden kaynaklanmıştır ve nesne yöneliminde birçok benzerlikleri vardır. Java JVM ve C # .NET CLR'ye ek olarak aynı yapı içinde birçok benzerlik vardır, ilgili geliştirme ekiplerinin kendi geliştirme yönleri vardır ve ilgili dillerinin nasıl olması gerektiği konusunda endişelidirler.

Bir dilin diğerinden daha iyi olmasıyla uğraşmak istemiyoruz, sadece C # geliştiricilerinin Java'da kullanamayacakları ama kullanabilecekleri özellikleri listelemek istiyoruz.

Başlayalım.

1

LINQ

LINQ (Dil ile Tümleşik Sorgu), geliştiricilerin çeşitli veri kaynaklarından verileri sorgulamasına yardımcı olmak için 2007'de C # ile tanıtıldı. Bunu kullanarak, çağrılan belirli veritabanının sözdizimini dikkate almadan sorgu ifadeleri yazabiliriz. LINQ sağlayıcısı tarafından sağlanan bir bileşen, sorguyu temel alınan veri kaynağı tarafından okunabilen bir biçime dönüştürür. Örneğin, bir SQL veritabanından veri sorgulamamız gerekirse, LINQ to SQL sağlayıcı programı LINQ sorgusunu veritabanının anlayabilmesi için T-SQL'e dönüştürecektir.

LINQ'da sorgu işlemlerini gerçekleştirmek için önce veritabanını alın, ardından sorguyu oluşturun ve son olarak sorguyu yürütün. LINQ to Object sorgusunda, bu, her döngü için iç içe geçmiş karmaşık yinelemeler yazmak yerine yalnızca aynı kod kadar basit olabilir.

Örneğin, C # 'daki bir listeden 2 haneyi filtrelemek için bu koda bir göz atalım.

İlk olarak, LINQ kullanmadan:

LINQ sorgu sözdizimi formunu kullanırsanız:

Veya yöntem sözdizimi formu:

Buradaki iki sözdizimi doğrudur, tek fark, sorgu sözdiziminin daha çok bir SQL deyimine benzemesi ve yöntem sözdiziminin lambda ifadeleri kullanmasıdır (tabii ki, Java'da yazdığımız bazı koda çok benziyor)

Özet: LINQ'nun dayandığı lambda ifadeleri (LINQ açısından çok yararlıdır) gibi birçok özellik Java'da eşdeğer bir uygulamaya sahiptir.Veri sorgulamak için akışları ve lambdaları kullanabilsek de, LINQ tüm süreci basitleştirir Ve Java'da var olan birçok gereksiz kodu kaldırdı.

2

Struct

C # 'teki yapılar sınıflara benzer. Aslında, yapı oluşturucular, sabitler, yöntemler vb. İçerebildiği için "hafif sınıf" olarak bile kabul edilebilir. Bir yapı ile bir sınıf arasındaki en büyük fark, yapının bir değer türü ve sınıfın bir referans türü olmasıdır.

Bir sınıf oluşturmakla karşılaştırıldığında, bir yapı yazmanın en önemli avantajı, bir değer türü oluştururken değer anlambilimini sağlamanın bir referans türü oluşturmaya göre daha kolay olmasıdır. Microsoft'un belgelerinde belirtildiği gibi, "yapı türündeki değişkenler doğrudan yapının verilerini içerirken, sınıf türünün değişkenleri verilere referanslar içerir." Bu nedenle, sınıfların kullanımını karşılaştırırken, bir yapıyı kullanmanın avantajlarından biri koddan olmasıdır. Diğer parçaların değerini değiştirmesinin tek yolu, onu açıkça bir referans olarak iletmektir.

Microsoft geliştiricileri, 16 bayttan küçük, yaşam döngüsü kısa, değişmeyen ve genellikle kutulanmayan türler için sınıflar yerine yapıların kullanılmasını önerir. Bu durumda, bir yapının kullanılması, bir sınıf kullanmaktan daha verimli olabilir çünkü bu, yığın yerine yığın üzerinde depolanacaktır.

gibi:

özet: Çoğu durumda, yapıları kullanmak bellek ayırma ve serbest bırakma süresinden tasarruf sağlayabilir, ki bu gerçekten çekici. Ancak gerçek şu ki, değer türleri kendi depolama alanlarına sahiptir. Yapının bariz avantajları ve dezavantajları ne olursa olsun, Java'da bunun için endişelenmenize gerek yok.

3

Async / Bekle

Bir kod parçasında zaman uyumsuz çağrısı yapın veya bir yöntemi daha açık bir şekilde çağırın, bu yöntem başka bir iş parçacığı üzerinde çalıştırılacak ve geçerli iş parçacığını engellemeyecektir. Kod await komutunu çalıştırdığında, çalışmaya devam eder (await ifadesi). Zaman uyumsuz kod şu anda tamamlanmadıysa, yürütmekte olan program çağırma noktasına geri dönecektir.

Bu, uygulamanın genel yanıt hızını artırmaya ve performans darboğazlarını azaltmaya yardımcı olur. Uygulama Web'e eriştiğinde ve UI ile ilgili tüm aktiviteleri gerçekleştirdiğinde, zaman uyumsuz programların kullanılması çok önemlidir. Eşzamansız programlamanın önceki uygulamasıyla karşılaştırıldığında, eşzamansız / await kullanmak kodunuzun mantıksal yapısını koruyabilirken, derleyici daha önce geliştirici tarafından taşınan yükü üstlenir.

Misal:

Çıktı:

özet: CompletableFutures, şüphesiz bizi C # ve Java'ya eşdeğer eşzamansız programlamaya sahip olma yeteneğine yaklaştırabilir. Bununla birlikte, kullanımının karmaşıklığı, kullanım kolaylığını, async / await anahtar sözcüklerini kullanan uygulama ile karşılaştırılamaz hale getirir.

4

Tembel < T > sınıf

İster C # ister Java kullanıyor olun, birçok kişi yavaş başlatma (veya örnekleme) uygulamıştır, bu nedenle nesne ilk kez kullanılıncaya kadar yaratılmayacaktır. Yaygın bir örnek, uygulama başladığında çok sayıda nesneyi yüklemek için yavaş başlatma kullanmaktır, ancak başlatılması gereken yalnızca birkaç nesne olabilir. Bu durumda, hangilerinin burada başlatılmasına gerek olmadığını belirlemek istiyoruz. Yalnızca gerçekten başlatılması gereken nesnelerin başlatılması, uygulama performansını artırabilir.

Özet: Son zamanlarda, Java 8'de Lambda ifadelerinin kullanılmaya başlanmasından sonra, Java'da geç yüklemeyi (ve diğer birçok şeyi) uygulamak daha kolay hale geldi. Bununla birlikte, C # 'da semantik Lazy kullanabiliriz < T > Herhangi bir sınıf kitaplığını veya kullanıcı tanımlı türü tembel olarak başlatmak için sınıfı kapsülleyin.

5

Bazı eşdeğer anahtar kelimeler

Dildeki kullanışlı özellikler, C #'daki LINQ veya Java'daki modüller kadar büyük olmayabilir. C # geliştiricilerine yardımcı olabilecek bazı anahtar sözcükler Java'da değildir:

gibi

C # 'daki as anahtar sözcüğü nesneyi güvenli bir şekilde belirli bir türe dönüştürmeye çalışır ve dönüştürülemezse geri döner. Java'nın instanceof'una neredeyse eşdeğerdir, ancak boolean bir değerdir, tür eşleşirse true döndürür, aksi takdirde false döndürür.

Yol ver

C # 'da Getiri ve getiri getirisi, açıkça ek sınıflar oluşturmaya veya geçici koleksiyonlar oluşturmaya gerek kalmadan özel ve durum bilgisi içeren yineleme için kullanılır. Java'da yinelemeyi uygulamak için en iyi seçenek, harici bir kitaplık kullanmak veya Java 8'de tanıtılan Lambda ifadesini kullanmaktır.

var

Var örtük bir türdür, gerçek türü derleyici tarafından belirlenir ve işlevi, açık bir tür (int, string, vb. Gibi) yazmaya eşdeğerdir. Var, bazı tuş vuruşlarını azaltmanın yanı sıra, LINQ'da çok yaygın olarak kullanılan anonim türlere de izin verir. "Var" logosunu görmeyi dört gözle bekliyoruz ve yüksek profilli Java SE 9, "yerel değişkenleri tanımlamak ve başlatmak için genişleyen tür kesintisi" uygulayacak.

Kontrol

C # 'da, tamsayı ifadeleri için taşma denetimini açık bir şekilde etkinleştirmek için kontrol edilmiş anahtar sözcüğü kullanırız. İfadenin sonucu hedef türünün kapsamının dışındaysa, çalışma zamanında bir OverflowException'ı zorlamak için check'i kullanabiliriz. Bu çok kullanışlıdır, çünkü sabit ifadeler derleme zamanında taşma açısından kontrol edilirken sabit olmayan ifadeler bu işlem için kontrol edilmez.

Araç ekosistemi

Java ve C # arasında pek çok fark vardır.Elbette, bazıları Java ve .NET çerçevesi arasındaki farklılıklardan kaynaklanmaktadır. Bu farklılıklar, üretim izleme ve hata takibinde OverOps'taki farklılıklar gibi bazı araçların uyumluluğunda farklılıklara da yol açmıştır.

OverOps, geliştiricilere, üretimdeki her hata için tüm çağrı yığınının tüm kaynak kodunu ve değişken durumunu gösterir. Şu anda .NET çerçevesinde eşdeğer bir içerik yok, ancak önümüzdeki birkaç ay içinde bazı değişiklikler olacak. Daha fazla bilgi için lütfen .NET Beta bekleme listemize katılmak için (https://www.overops.com/dot-net) tıklayın, Java geliştiriciyseniz, demoyu görüntülemek için www.overops.com adresine gidebilirsiniz.

Son düşünceler

Sonlara doğru, burada bahsettiğimiz özelliklerin çoğu, kod uzunluğu ve kısalık açısından C # geliştiricilerine faydalıdır.Bu kodlar Java ile yazılamaz. Aslında bu özellikler, en son sürüm güncellemesinin getirdiği Lambda ifadeleri dahil olmak üzere Java dilinin ayrıntı düzeyini aşağı yukarı açıklamaktadır. C # 'da var olan ancak Java'da bulunmayan bu özelliklerin çoğunun, Lambda'yı normal kullanımda kullanmaktan daha kısa bir sözdizimi sağladığı doğrudur.

Yine, hangi dilin daha iyi olduğu konusunda bitmek bilmeyen tartışmalara dahil olmak istemiyoruz, sadece iki dil arasındaki bazı farklılıklara işaret etmek için buradayız. Java'nın sahip olmasını istediğiniz bazı özellikleri kaçırdık mı? Lütfen yorumlarda bize bildirin!

Tekel karşıtı tam olarak neye karşı çıkıyor? Son 50 yılda süper büyük şirketlerde ve karşılaştıkları denetimde ne gibi değişiklikler oldu?
önceki
Duvar rafları "görünmez" olabilir mi? Aslında görsel bir oyun Bu tasarım harika
Sonraki
Çince karakterlerin güzelliğini hissedin ve kültürel klasikleri miras alın
Kış Olimpiyatları sırasında Arowana, Pekin Kış Olimpiyatları'nın resmi tahıl ve yağ ürünleri sponsoru oldu
Sok San özgürlük getiriyor, Pogba ve Manchester United doğuyor
2019 Kuzey Amerika Otomobil Fuarı Pavyonu: Lincoln'ün 80. Yıl Sürümü Açıklandı
OnePlus tarihindeki en iyi cep telefonu: OnePlus 6T% 23 arttı
Yılbaşı alışverişlerinin listesi "yabancı tatlar" ile dolu
Kağıt fiyatları yükselmeye devam ediyor, geri dönüştürülebilir kurye kutuları ilk olarak "jianghu" olarak göründü
Muhtemelen en hızlı ekranlı parmak izli telefon! OnePlus 6T parmak izi kilit açma hızı yalnızca 0,34 saniyedir
Haval'ın küresel satışları 5 milyona ulaştı ve resmi olarak 5-2-1 küreselleşme stratejisi yayınladı
Reformun öncüleri, reformun 40. yıldönümünü tartışmak ve açılmak için mezun oldukları okullara döndüler
2017'de tam donanımlı bir mühendis nasıl olunur, sahip olmanız gereken bu beceriler! Öğrenmesi son derece zor
Pekin'in "En Güzel On Ağaç Kralı" açıklandı, en yaşlı ağaç 3.500 yaşında
To Top