- Java को आमतौर पर बड़े, दीर्घकालिक प्रोजेक्ट्स के लिए उपयुक्त माना जाता है, लेकिन यह छोटे कामों के लिए भी एक बेहतरीन टूल हो सकता है
- Static type checking और बेहतरीन tool support छोटे कामों में भी बड़ा फ़ायदा देते हैं
- हाल की language improvements ने Java को और अधिक उपयोगी बना दिया है
compile किए बिना चलाना
संक्षिप्त 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));
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 टिप्पणियां
साधारण scripting के लिए इस्तेमाल करना हो तो dynamic type वाली भाषाएँ बहुत ही सुविधाजनक होती हैं...
बेशक, prototype से आगे बढ़ने पर मैं static language इस्तेमाल करूँगा।
Hacker News राय
"Hello World" प्रोग्राम को बहुत आसानी से चलाने का तरीका मिला। पहले के जटिल कोड की तुलना में यह काफी सरल हो गया है।
varऔरrecordखास तौर पर उपयोगी हैं।java myfile.javaतरीके से AoC समस्याएँ हल कर रहा हूँ, औरjava.baseका अपने-आप import होना उपयोगी है।Java, JavaScript और TypeScript का इस्तेमाल करता हूँ, लेकिन scripting के लिए .NET और LINQPad इस्तेमाल करता हूँ। LINQ की वजह से scripting आसान हो जाती है।
JDK 1.1 के विकास के समय test suite पर कोई सहमति नहीं थी। Mark Reinhold ने JCK-शैली के tests को ठुकराया और एक simple test harness लिखा।
भाषाएँ समय के साथ विकसित होती हैं। 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-previewoption के साथ इस्तेमाल किया जा सकता है।Hacker Rank पर "single-file Java" coding सीखी, और यह whiteboard coding समस्याएँ हल करने में उपयोगी है।
अगर simple main method के पीछे का कारण जानना हो, तो JEP 495 देखना उपयोगी होगा। इसे JDK 24 में शामिल किया जाना है।
सभी coding scripts और tasks के लिए Java का इस्तेमाल करता हूँ, और 5 साल से ज़्यादा समय से कंपनी में भी इसका उपयोग कर रहा हूँ। Java का लगातार विकसित होना संतोषजनक है।