7 पॉइंट द्वारा GN⁺ 2024-12-20 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • Java को आमतौर पर बड़े, दीर्घकालिक प्रोजेक्ट्स के लिए उपयुक्त माना जाता है, लेकिन यह छोटे कामों के लिए भी एक बेहतरीन टूल हो सकता है
  • Static type checking और बेहतरीन tool support छोटे कामों में भी बड़ा फ़ायदा देते हैं
  • हाल की language improvements ने Java को और अधिक उपयोगी बना दिया है

compile किए बिना चलाना

  • JEP 330 और JEP 458 की बदौलत Java source file को सीधे run किया जा सकता है:
    java RandomFiles.java 10 /home/cay/data  
    
  • हर run पर यह अपने-आप compile हो जाता है, इसलिए development और testing में उपयोगी है
  • Graal का उपयोग करके इसे native executable में बदला जा सकता है, लेकिन ज़्यादातर मामलों में performance का फ़र्क मामूली होता है

संक्षिप्त syntax: instance main method और implicit class

  • JEP 477: छोटे program और script लिखना आसान बनाता है
  • पहले का झंझटभरा syntax (public static void main) हट जाता है:
var someVariable = initialValue;  
String helper(int param) { ... }  
void main(String[] args) {  
    ...  
}  
  • java.base module का automatic import होने से सुविधा बढ़ती है
  • println, print, readln methods भी अपने-आप import हो जाते हैं

Records और Enums

  • Records: Python dictionary की जगह structured data को व्यक्त करने का तरीका
record Window(int id, int desktop, int x, int y, int width, int height, String title) {}  
  • Enums: Python की तुलना में अधिक सहज enum expression
enum Direction { NORTH, EAST, SOUTH, WEST };  

उपयोगी language और API features

  • var का उपयोग: script में type declaration के बिना variables इस्तेमाल किए जा सकते हैं
  • static import: अधिक संक्षिप्त math calculation संभव
import static java.lang.Math.*;  
var diagonal = sqrt(pow(width, 2) + pow(height, 2));  
  • text blocks: code और data को साथ रखकर readability बेहतर बनती है
  • मजबूत string, regular expression, collection, date/time libraries
  • file पढ़ना:
var content = Files.readString(Path.of(filename));  
  • external process चलाना:
String run(String... cmd) throws Exception {  
    var process = new ProcessBuilder(cmd).redirectErrorStream(true).start();  
    process.waitFor();  
    return new String(process.getInputStream().readAllBytes());  
}  

dependency handling और JBang

  • JBang: Maven dependency को source file में सीधे जोड़ा जा सकता है
//DEPS org.eclipse.angus:jakarta.mail:2.0.3  
  • फिर इसे ऐसे चलाया जा सकता है
jbang MailMerge.java  
  • script को executable में बदलना:
///usr/bin/env jbang "$0" "$@" ; exit $?  

notebook environment

notebook के फ़ायदे

  • exploratory programming: data के साथ काम करते हुए one-off या छोटे पैमाने के code execution के लिए उपयुक्त
  • code और text cell संरचना:
    • code cell के execution results text, table, image, audio, या video के रूप में दिखाए जा सकते हैं
    • कोशिश और असफलता की प्रक्रिया दोहराने के बाद मनचाहा परिणाम मिलने पर comments जोड़े जा सकते हैं
  • JShell से बेहतर:
    • cell unit में काम करना अधिक आसान
    • data tables और graphs को visually देखा जा सकता है
    • save और share करना सरल

Jupyter और Java notebook

  • Jupyter notebook: Python data scientists के बीच व्यापक रूप से उपयोग किया जाने वाला टूल
    • local या cloud (जैसे Google Colab) में चलाया जा सकता है
  • Jupyter technology language-independent है:
    • अलग-अलग language kernels install किए जा सकते हैं (जैसे IJava, JJava, Ganymede, Rapaio)
    • Jupyter Java Anywhere: JBang का उपयोग करके Java kernel installation को सरल बनाता है
  • सीमाएँ:
    • हर kernel में dependency handling और non-text results दिखाने का तरीका अलग होता है
    • IJava kernel में dependency resolution से जुड़ी कुछ समस्याएँ हैं
    • Oracle या प्रमुख vendors को Java-विशेष Colab service देनी चाहिए

Java में data processing और visualization

  • Python में NumPy और Matplotlib जैसी libraries के कारण data processing आसान है
    • Java में अभी वैसा ecosystem अपेक्षाकृत कमज़ोर है
  • tablesaw:
    • NumPy के विकल्प के रूप में इस्तेमाल किया जा सकता है
    • Plot.ly JavaScript package का उपयोग करके visualization support देता है

JTaccuino project

  • JTaccuino:
    • Sven Reimers द्वारा विकसित किया जा रहा Java notebook
    • JavaFX आधारित user-friendly UI देता है
    • backend के रूप में JShell का उपयोग करता है
    • अभी शुरुआती चरण में है, लेकिन आगे बढ़ने की संभावना काफ़ी है

Kotlin notebook

  • Kotlin developers के लिए Kotlin Notebook IntelliJ plugin उपलब्ध है

निष्कर्ष

  • सही tools का उपयोग किया जाए तो Java छोटे काम संभालने के लिए बहुत प्रभावी विकल्प है
  • JBang third-party libraries का उपयोग करने वाली scripts लिखना आसान बनाता है
  • Java में exploratory programming की भी क्षमता है, लेकिन tool support को और बेहतर करने की ज़रूरत है

2 टिप्पणियां

 
aer0700 2024-12-24

साधारण scripting के लिए इस्तेमाल करना हो तो dynamic type वाली भाषाएँ बहुत ही सुविधाजनक होती हैं...
बेशक, prototype से आगे बढ़ने पर मैं static language इस्तेमाल करूँगा।

 
GN⁺ 2024-12-20
Hacker News राय
  • "Hello World" प्रोग्राम को बहुत आसानी से चलाने का तरीका मिला। पहले के जटिल कोड की तुलना में यह काफी सरल हो गया है।

    • Java 21 इस्तेमाल करते हुए लगा कि कोड कम जटिल हो गया है। var और record खास तौर पर उपयोगी हैं।
    • java myfile.java तरीके से AoC समस्याएँ हल कर रहा हूँ, और java.base का अपने-आप import होना उपयोगी है।
  • Java, JavaScript और TypeScript का इस्तेमाल करता हूँ, लेकिन scripting के लिए .NET और LINQPad इस्तेमाल करता हूँ। LINQ की वजह से scripting आसान हो जाती है।

    • Python का सम्मान करता हूँ, लेकिन उसे पढ़ना मुश्किल लगता है। PHP और Python का syntax उतना परिचित नहीं है।
  • JDK 1.1 के विकास के समय test suite पर कोई सहमति नहीं थी। Mark Reinhold ने JCK-शैली के tests को ठुकराया और एक simple test harness लिखा।

    • Java programmers के लिए सबसे उपयोगी feature debugger hot reload है। इससे code लिखना बहुत आसान हो जाता है।
  • भाषाएँ समय के साथ विकसित होती हैं। Java अब तेज़ है, और generics तथा simple type inference जैसी सुविधाएँ जुड़ने से boilerplate code कम हुआ है।

  • PHP भी एक उपयोगी भाषा है। यह कई *nix systems में पहले से install होती है, और files, JSON, तथा network requests संभालने के लिए उपयोगी standard library देती है।

  • Java 23 में java.io.IO के तीन methods अपने-आप import हो जाते हैं। यह एक नया type है, और --enable-preview option के साथ इस्तेमाल किया जा सकता है।

  • Hacker Rank पर "single-file Java" coding सीखी, और यह whiteboard coding समस्याएँ हल करने में उपयोगी है।

  • अगर simple main method के पीछे का कारण जानना हो, तो JEP 495 देखना उपयोगी होगा। इसे JDK 24 में शामिल किया जाना है।

  • सभी coding scripts और tasks के लिए Java का इस्तेमाल करता हूँ, और 5 साल से ज़्यादा समय से कंपनी में भी इसका उपयोग कर रहा हूँ। Java का लगातार विकसित होना संतोषजनक है।