छवि स्रोत: pixabay.com
स्काला बनाम जावा प्रदर्शन
स्काला बनाम जावा, सदी की अंतिम लड़ाई में आपका स्वागत है। सर्वशक्तिमान जावा बनाम स्काला। कुछ लोग पूछ सकते हैं क्यों? कुछ लोग यह भी कह सकते हैं कि स्काला वास्तव में जावा का हिस्सा है, फिर यह स्काला बनाम जावा तुलना क्यों? इसका कारण यह है कि स्काला बिल्कुल जावा नहीं है। ओह! यह जावा के पास भी नहीं है। हालांकि यह जेवीएम (जावा वर्चुअल मशीन) कंपाइलर का उपयोग करता है, यह केवल आंशिक रूप से जावा के समान है।
आप कह सकते हैं जैसे जावा स्काला का ग्रैंड फादर है । कारण, इसमें जावा की कुछ विशेषताएं हैं जैसे कि बाइट कोड में सरल कोड संकलित करना, कम एकीकरण और कई अन्य। यह एक कारण है, हालांकि स्काला में जावा है, यह जावा नहीं है। उलझन में? हाँ, ठीक है मैं भी था। और यही कारण है कि इस ब्लॉग लक्ष्यीकरण शुरुआती लोगों को भ्रमित न होने के कारण।
पहले से ही पर्याप्त बातचीत, चलो शुरू करें और देखें कि स्काला में प्रोग्रामिंग के लिए मतभेद, समानताएं और कारण क्या हैं जब हमारे पास पहले से जावा है।
आप स्काला बनाम जावा की आरेखण तुलना के लिए इन्फोग्राफिक देख सकते हैं।
स्काला बनाम जावा इन्फोग्राफिक्स
स्काला बनाम जावा दृष्टिकोण
जावा एक ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा है। इसका उद्देश्य मुख्य रूप से दिए गए आंकड़ों को एकत्रित करने और छेड़छाड़ पर केंद्रित है। यह ग्राफ़िक यूआई और ऑब्जेक्ट उन्मुख पैटर्न की सहायता से दैनिक उपयोगकर्ताओं को एप्लिकेशन उपलब्ध कराने की कोशिश करता है, जबकि दूसरी ओर स्काला प्रोग्रामिंग पारंपरिक कार्यात्मक दृष्टिकोण का पूरी तरह से पालन करती है।
जावा के विपरीत स्काला, एक मशीन संकलित भाषा है। इसका मतलब है, यह किसी विशेष वातावरण पर जेवीएम की तरह कुछ विशिष्ट वातावरण पर चलाने के लिए डिज़ाइन किया गया है और एक कंपाइलर (डॉस के समान) की मदद से कार्यात्मक और ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण का संयोजन प्रदान करता है और उस समय एक प्रकार की प्रणाली सांख्यिकीय रूप से स्कैन की जाती है संकलन का जो कि जावा के समान है, इस बात को छोड़कर कि इसमें रूबी जैसे उच्च स्तरीय भाषाओं का अभिव्यक्तिपूर्ण वाक्यविन्यास है ।
लेकिन स्काला संस्करण को उत्पादक बनाने वाली वही विशेषताओं को अनदेखा न करने के लिए, स्काला बनाम जावा प्रदर्शन को बाधित कर सकते हैं और इसे होने की अपेक्षा अधिक विनाशकारी बना सकते हैं।
नोट: जावा विकास बनें जावा
का उपयोग करके एप्लिकेशन और सॉफ़्टवेयर को विकसित करने का तरीका जानें। जावा एप्लिकेशन चरणों को डिजाइन, कार्यान्वित और बनाए रखें। जावा कार्यक्रमों के लिए आवेदन कोड विकसित करें।
स्काला के जन्म की आवश्यकता
स्कला क्या है? स्काला विशेष रूप से जावा की बेहतर भाषा होने के उद्देश्य से विकसित किया गया था। विकास जावा के उन हिस्सों को छोड़ना चाहते थे, जो उत्पादक प्रोग्रामिंग में बाधा डालते थे, इस तथ्य के साथ-साथ विकास को निराशा होती है। बिंदु यह है कि कोड में भिन्नता है और दृष्टिकोण में परिवर्तन (जावा की तुलना में जब) स्काला भाषा को थोड़ा और कठिन बना सकता है, फिर भी परिणाम बहुत साफ और अच्छी तरह से संरचित है जो अंततः उपयोग करने और पढ़ने के लिए आसान है पायथन की पसंद का । आप मेरे अगले ब्लॉग में स्काला बनाम पायथन के साथ भी जा सकते हैं।
आइए दोनों भाषाओं में एक पाठ की एक साधारण प्रिंटिंग देखें:
जावा:
public class IamJava {
public static void main(String[] args) {
System.out.println(“I am Java!”);
}
}
स्काला:
object IamScala {
def main(args: Array[String]): Unit = {
println(“I am Scala!”)
}
}
एचएमएनएन … शायद ही कोई अंतर है। तुम घबराओ नहीं। मैं अभी तक दिखाने के लिए अभी तक नहीं हूँ। अब चलिए एक और सटीक उदाहरण देखें। जावा में लिखे गए कोड का एक लंबा टुकड़ा इस प्रकार एक उदाहरण है; स्काला में बस एक लाइनर हो सकता है:
जावा:
public class People
{
private String start;
private String stop;
String getstart() { return start; }
void setstart(String start) { this.start = start; }
String getstop() { return stop; }
void setstop(String stop) { this.stop = stop; }
int hashCode() ….
boolean equals(Object o) { …. }
}
स्काला:
case class People(start:String, stop:String)
इस प्रकार, स्काला में एक पंक्ति जावा की ग्यारह रेखाओं के बराबर है। अधिक विशिष्ट होने के लिए, जावा में स्काला प्रोग्राम की कॉम्पैक्टनेस की कमी है, और इस प्रकार लंबे कोड लिखने से जावा विकास की आदत बन गई है। असल में, हम इसे इस तरह से भी लिख सकते हैं:
public class People extends DTOBase
{
public String start;
public String stop;
}
स्काला प्रोग्रामिंग भाषा की कॉम्पैक्टनेस वास्तव में ध्यान देने योग्य है। मैं गेटर्स और सेटर्स की सहायता के बिना भी एक फ़ील्ड लिख सकता हूं और वह भी बिना किसी बाधा के। यह सोच रहा है कि जावा भाषा का विकास कॉम्पैक्टनेस की ओर भी चलता है।
कहने की जरूरत नहीं है कि जावा के पास अपनी आस्तीन भी कुछ चाल है। एक कारण है कि यह प्रोग्रामिंग की दुनिया पर हावी है। जावा हालांकि कोड को थोड़ा छोटा कर सकता है, लेकिन स्पष्ट रूप से मानक उपयोग में नहीं।
अब आइए प्लेन ओल्ड जावा ऑब्जेक्ट पर एक नज़र डालें। आइए मान लें, आप एक भयानक प्रोग्रामर हैं (जो स्पष्ट रूप से मैं नहीं हूं … err..just मजाक कर रहा हूं) तो कहने के लिए, आप किसी भी तरह से कोड को कम करने में कामयाब रहे, लेकिन किस लंबाई में? 5 से 6 लाइनें?… मुझे यह सीधे प्राप्त करें … क्या होगा यदि आप इस तरह के कोड का एक टुकड़ा लिखना चाहते हैं:
public class Group {
private String value;
private record<tokens> tokens;
public Group() {
tokens = new Arrayrecord<tokens>();
}
public String getvalue() {
return value;
}
public void setvalue(String value) {
this.value = value;
}
public record<tokens> gettokens() {
return tokens;
}
public void settokens(record<tokens> tokens) {
this.tokens = tokens;
}
}
public class tokens {
private int id;
private record<item> items;
public tokens() {
items = new Arrayrecord<item>();
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public record<item> getitems() {
return items;
}
public void setitems(record<item> items) {
this.items = items;
}
}
public class item {
private int id;
private String characteristic;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getcharacteristic() {
return characteristic;
}
public void setcharacteristic(String characteristic) {
this.characteristic = characteristic;
}
}
ज़ज्ज़ … मुझे पहले से नींद आ रही है। अब, स्काला पर एक नज़र डालें। यहां बस यह सुनिश्चित करने के लिए, मैं आपको बताता हूं कि मैं यहां कोड के किसी भी हिस्से को कम करने की कोशिश नहीं कर रहा हूं। मैं सिर्फ उसी कोड का एक ही टुकड़ा लिख रहा हूं जिसे मैंने उपरोक्त में सबसे बुनियादी प्रारूप में लिखा है (जैसा कि एक शुरुआती विकास लिखता है) स्काला में (मैंने सूचियों या सरणीसूची के रूप में रिकॉर्ड का उपयोग किया है):
class Group {
var value: String = _
var tokens: record[tokens] = Nil
}
class tokens {
var id: Int = _
var items: record[item] = Nil
}
class item {
var id: Int = _
var category: String = _
}
आपने लोगों को यह कहते हुए सुना होगा कि जावा स्काला से कहीं अधिक सरल है। मुझे अब आपसे पूछने दो; अब आप कौन सी भाषा अधिक जटिल महसूस करते हैं, हुह? तो, अगली बार जब आप जावा विकास के साथ बहस करेंगे, तो इस सरल कार्यक्रम को अपने साथ रखें।
डरो मत। हालांकि जावा कोड बड़े दिखाई देते हैं, लेकिन वे वास्तव में जटिल नहीं हैं। स्काला को समझने के बजाय जावा को समझना वास्तव में कहीं अधिक आसान है। स्काला बहुत कॉम्पैक्ट है। सबसे अच्छा मैं कहूंगा, यह अनुभवी विकास के लिए उपयुक्त है जिनके पास जावा में ऐप्स विकसित करने में वर्षों का अनुभव है। शुरुआती जावा को जानने के बिना स्काला को लिखना और समझना मुश्किल होगा।
अनुभव कोडर यह भी तर्क दे सकते हैं कि जावा स्काला की तुलना में अधिक पठनीय है, क्योंकि स्काला के गहरे घोंसले वाले कोड होने का कारण है। स्काला में, आप फ़ंक्शन के अंदर फ़ंक्शंस को किसी अन्य फ़ंक्शन में परिभाषित कर सकते हैं, किसी अन्य ऑब्जेक्ट के अंदर जो कक्षा के अंदर है और इसी तरह। तो आप देखते हैं, कॉम्पैक्टनेस के बारे में इतना कहना है। यद्यपि जावा में कॉम्पैक्टनेस की आवश्यकता है, कभी-कभी यह खराब होने पर विनाशकारी प्रभाव लाता है। तो विनाशकारी, कि आप अपने कोड को भी समझ नहीं पाएंगे।
हालांकि स्काला यहां अपरिवर्तित है, हालांकि यह प्रदर्शन के बलिदान के साथ है। हमने स्काला के प्रदर्शन बेंचमार्क के बारे में कभी बात नहीं की, क्या हमने? मैंने हाल ही में अपने एएमडी-ए 8 सीपीयू पर स्काला और जावा के बेंचमार्क का परीक्षण किया। परिणाम मुझे वास्तव में अप्रत्याशित था। यद्यपि आप स्काला में कॉम्पैक्ट कोड लिख सकते हैं, प्रदर्शन यानी जावा की तुलना में गति वास्तव में धीमी गति से दोगुनी होती है।
निष्कर्ष- स्काला बनाम जावा
स्काला जावा; अंत में एक ही सिक्के के दो अलग-अलग पक्ष हैं। दोनों के पास पेशेवरों और विपक्ष का अपना सेट है। यही कारण है कि आप कभी भी जावा के लिए जावा और दूसरे तरीके से जावा को प्रतिस्थापित नहीं कर सकते हैं। एक तरफ जहां जावा सरल, सुपर-फास्ट और कार्यों को संभालने में कुशल है; दूसरी ओर स्काला एक ही समय में दक्षता पर समझौता के साथ अत्यंत कॉम्पैक्ट और लिखना आसान है (हालांकि समझने और डीबग करना मुश्किल है)।
स्काला के फायदे और नुकसान अक्सर प्रभावित होते हैं क्योंकि उन्हें आवेदन का एक टुकड़ा लिखने में कोई समस्या नहीं मिली या वे असफल रहे। इसका सही मूल्यांकन करने के लिए, इस तरह के विचारों के पीछे कारण और तथ्यों को समझना वास्तव में महत्वपूर्ण है।
जावा और स्काला के बीच मुख्य अंतर उनके दर्शन और कोड की टुकड़ा लिखने की दिशा में उनकी प्रकृति है। जावा पूरी तरह ऑब्जेक्ट उन्मुख है और कक्षाओं, एनकॅप्सुलेशन और सामान की ओर केंद्रित है, जबकि स्काला कार्यात्मक दृष्टिकोण पर आधारित है। एक बार जब आप इस अंतर को जानते हैं, तो उन्हें सीखना सिर्फ समय की बात होगी।
अनुशंसित लेख
यहां कुछ लेख दिए गए हैं जो आपको माइक्रोसॉफ्ट एक्सेल टिप्स और ट्रिक्स के बारे में अधिक जानकारी प्राप्त करने में मदद करेंगे ताकि लिंक के माध्यम से जाएं।