Memperkenalkan Enjin JavaScript Nashorn
mata teras
- Nashorn adalah enjin JavaScript berprestasi tinggi yang dibangunkan oleh Oracle menggunakan Java. Ia membolehkan pemaju untuk membenamkan JavaScript dalam aplikasi Java dan memanggil kaedah dan kelas Java dari kod JavaScript.
- Matlamat reka bentuk Nashorn termasuk: berdasarkan spesifikasi bahasa ECMASCRIP Prestasi yang lebih baik daripada pendahulunya, Rhino.
- Dengan Nashorn, JavaScript boleh digunakan sebagai bahasa skrip gaya shell yang kuat, memanfaatkan kesederhanaan JavaScript dan API Java yang kaya. Ia boleh digunakan dalam tetapan untuk aplikasi klien, aplikasi pelayan, aplikasi mudah alih, atau Internet Perkara Kecil (IoT).
Mengapa menyerah badak?
Rhino adalah pendahulu Nashorn. Ia bermula dengan projek Netscape pada tahun 1997 dan dikeluarkan pada tahun 1998.Rhino telah dikeluarkan selama 16 tahun, dan enjin JavaScript ini telah memenuhi misinya. Oleh itu, pasukan Java memutuskan untuk membangunkan enjin JavaScript baru dari awal, dan bukannya menulis semula yang sedia ada. Ini melahirkan Nashorn (menarik, Nashorn bermaksud badak dalam bahasa Jerman).
Hampir semua orang menggunakan JavaScript dalam pelayar mereka, dan sesetengah orang menggunakannya pada pelayan juga (seperti Node.js), tetapi Nashorn mempunyai tujuan pembangunan yang berbeza. Dengan menggunakan Nashorn, pemaju boleh melaksanakan fungsi berikut:
- Jalankan JavaScript sebagai kod desktop asli.
- skrip shell ditulis menggunakan JavaScript.
- memanggil kelas dan kaedah Java dari kod JavaScript.
Matlamat Nashorn
Apabila merancang Nashorn, pemaju menetapkan satu siri matlamat untuknya:
- Ia harus berdasarkan spesifikasi bahasa Versi ECMAScript-262 5.1 dan mesti lulus ujian keserasian ECMAScript-262.
- Ia harus menyokong API javax.script (JSR 223).
- Ia sepatutnya membenarkan Java dipanggil dari JavaScript dan sebaliknya.
- Ia harus menentukan alat perintah JJS untuk menilai kod JavaScript dalam skrip "Shebang" (biasanya bermula dengan #!/Bin/sh), di sini dokumentasi, dan edit rentetan.
- prestasinya harus bertambah baik daripada badak.
- Ia tidak sepatutnya menimbulkan risiko keselamatan.
Penerangan ringkas JavaScript
Untuk menggunakan JavaScript dalam shell menggunakan alat JJS Nashorn, anda harus terlebih dahulu memasang JDK8, yang boleh anda muat turun secara percuma. Untuk menguji pemasangannya, laksanakan:
>_ javac -version # 它应该回显 # java version "1.8.x" jjs -version # 它应该回显 # nashorn 1.8.x jjs>
Jika ada masalah dengan arahan pertama atau kedua, cuba tambah JDK ke jalan
Sekarang anda boleh menggunakan JavaScript sebagai skrip shell. Semak contoh mudah ini:
jjs> var a = 1 jjs> var b = 4 jjs> print (a+b) 5 jjs>
您可能已经发现,您不必将代码写入jjs shell。您可以将代码写入JavaScript源文件,然后从shell调用它。考虑以下JavaScript代码:
var isPrime = function(num) { if (isNaN(num) || !isFinite(num) || num < 2) return false; var m = Math.sqrt(num); for (var i = 2; i <= m; i++) { if (num % i === 0) return false; } return true; } var numbers = [ 2, 3, 4, 5, 6, 7, 8, 9, 10 ]; for (var i = 0; i < numbers.length; i++) { if (isPrime(numbers[i])) print(numbers[i] + " is prime"); else print(numbers[i] + " is not prime"); }
假设代码位于名为prime.js的文件中,我们可以通过执行以下命令在shell中运行它:
>_ jjs prime.js 2 is prime 3 is prime 4 is not prime 5 is prime 6 is not prime 7 is prime 8 is not prime 9 is not prime 10 is not prime
这可能会让您想起Python代码或bash脚本,但它是JavaScript。 Untuk menjadikannya lebih seperti bash, Nashorn menyediakan pembolehubah argumen untuk mengekstrak parameter baris arahan. Pertimbangkan contoh ini:
if (arguments.length === 0) print("No command-line arguments."); else { print("Called with these command-line arguments:"); for each (cli_arg in arguments) { print(cli_arg); } }
menjalankannya akan memberikan output ini (parameter adalah selepas -):
>_ jjs cliargs.js No command-line arguments. >_ jjs cliargs.js -- a b "c d e" Called with these command-line arguments: a b c d e
Di samping itu, JavaScript boleh menggunakan kelas dan kaedah Java.请参阅此多线程JavaScript代码示例:
var Thread = Java.type("java.lang.Thread"); var Runnable = Java.type('java.lang.Runnable'); var Run1 = Java.extend(Runnable, { run: function() { print("One thread"); print("One thread"); } }); new Thread(function() { print("Another thread"); print("Another thread"); print("Another thread"); }).start() new Thread(new Run1()).start();
output akan:
<code>Another thread Another thread One thread One thread Another thread</code>
anda dapat melihat dari output bahawa kod itu berbilang threaded. Dengan menggunakan java.type ("java.lang.thread");, kita boleh menghubungi kelas Java dalam kod JavaScript. Nashorn juga membenarkan operasi terbalik, memanggil kod JavaScript dalam kod Java.
package j2js.example; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class Main { public static void main(String[] args) { ScriptEngine nashorn = new ScriptEngineManager().getEngineByName("nashorn"); try { nashorn.eval("print('Am I Java or JavaScript?')"); } catch (ScriptException e) { e.printStackTrace(); } } }
Contoh ini mencetak saya Java atau JavaScript hanya pada baris 14? Soalan, tetapi ini adalah contoh yang paling mudah untuk meletakkan kod JavaScript ke dalam Java. Anda boleh menggunakan kaedah Java untuk membaca keseluruhan kod sumber dalam fail JavaScript dan kemudian lulus kod tersebut ke kaedah EVAL () sebagai parameter rentetan. Ini akan membolehkan kod JavaScript dilaksanakan di dalam Java.
Kesimpulan
JavaScript ada di mana -mana sekarang! Anda boleh menggunakannya untuk aplikasi klien, aplikasi pelayan, dan lebih baik, kadang -kadang kedua -dua pelanggan dan pelayan. Anda boleh menggunakannya untuk aplikasi mudah alih atau menyediakan IOT kecil. Sekarang, dengan Nashorn, anda boleh menggunakannya sebagai bahasa skrip gaya shell yang kuat, memanfaatkan kesederhanaan JavaScript dan API kaya Java.
soalan yang sering ditanya mengenai enjin nashorn javascript
Apakah enjin JavaScript Nashorn?
Nashorn JavaScript Engine adalah enjin JavaScript berprestasi tinggi yang dibangunkan oleh Oracle untuk Mesin Maya Java (JVMS). Ia direka untuk melaksanakan kod JavaScript secara tempatan di JVM, yang membolehkan Java dan JavaScript berinteraksi dengan lancar. Nashorn memberikan peningkatan prestasi yang signifikan ke atas pendahulunya, Rhino, dan termasuk sokongan untuk keupayaan JavaScript yang lebih baru.
Nashorn与其他JavaScript引擎相比如何?
Nashorn的独特之处在于它专门为JVM设计。这使其能够利用JVM的健壮性、成熟性和性能特性。它还在Java和JavaScript之间提供了一个直接的桥梁,使两种语言能够无缝交互。 Walau bagaimanapun, perlu diperhatikan bahawa Nashorn tidak digunakan secara meluas sebagai enjin JavaScript lain seperti V8 (untuk Node.js dan Chrome) atau Spidermonkey (untuk Firefox).
Bagaimana menggunakan Nashorn dalam aplikasi Java saya?
Untuk menggunakan Nashorn dalam aplikasi Java, anda perlu membuat contoh baru Nashorn ScriptEngine menggunakan kelas Scriptenginemanager. Anda kemudian boleh melaksanakan kod JavaScript menggunakan kaedah Eval () scriptEngine. Berikut adalah contoh mudah:
>_ javac -version # 它应该回显 # java version "1.8.x" jjs -version # 它应该回显 # nashorn 1.8.x jjs>
Apakah faedah menggunakan Nashorn?
Nashorn menyediakan beberapa faedah. Pertama, ia membolehkan anda melaksanakan kod JavaScript secara tempatan di JVM, yang dapat meningkatkan prestasi. Kedua, ia menyediakan jambatan lancar antara Java dan JavaScript, yang membolehkan anda menggunakan perpustakaan dan kerangka JavaScript dalam aplikasi Java anda. Akhirnya, Nashorn menyokong ciri -ciri JavaScript yang lebih baru, yang boleh menjadikan kod JavaScript anda lebih cekap dan mudah ditulis.
Adakah Oracle masih mengekalkan Nashorn?
Sehingga JDK 11, Oracle telah menamatkan Nashorn. Ini bermakna bahawa walaupun ia masih termasuk dalam JDK, ia tidak lagi aktif dibangunkan atau dikekalkan. Oracle mengesyorkan pemaju mula mencari alternatif.
Apakah beberapa alternatif kepada Nashorn?
Nashorn mempunyai beberapa alternatif, termasuk GraalVM, yang merupakan runtime berprestasi tinggi yang menyokong pelbagai bahasa termasuk JavaScript. Alternatif lain termasuk Rhino, satu lagi enjin JavaScript untuk JVM, dan Node.js, runtime JavaScript yang popular berdasarkan enjin V8 JavaScript Chrome.
Bolehkah saya menggunakan ciri -ciri ES6 di Nashorn?
Nashorn menyokong beberapa ciri ES6, tetapi tidak semuanya. Ini termasuk pengisytiharan LET dan const, fungsi anak panah dan rentetan templat, dll. Walau bagaimanapun, fungsi seperti modul, kelas dan janji tidak disokong.
Bagaimana untuk debug kod JavaScript yang dilaksanakan oleh Nashorn?
Nashorn mengandungi alat baris arahan yang dipanggil JJS yang boleh digunakan untuk melaksanakan dan debug kod JavaScript. Anda juga boleh menggunakan Java Debugger (JDB) untuk debug kod JavaScript yang dilaksanakan oleh Nashorn.
Bolehkah saya menggunakan modul Node.js di Nashorn?
Walaupun Nashorn sendiri tidak menyokong modul Node.js, terdapat beberapa perpustakaan yang dapat menyediakan fungsi ini. Perpustakaan sedemikian adalah avatar.js, yang menyediakan sistem API dan modul serasi node.js di atas Nashorn.
Bagaimana untuk memanggil kaedah Java dari kod JavaScript yang dilaksanakan oleh Nashorn?
Nashorn menyediakan jambatan lancar antara Java dan JavaScript, yang membolehkan anda memanggil kaedah Java secara langsung dari kod JavaScript. Berikut adalah contoh mudah:
jjs> var a = 1 jjs> var b = 4 jjs> print (a+b) 5 jjs>
Respons yang disemak ini mengekalkan imej asal dan formatnya, sambil memupuk teks untuk membuat versi unik artikel.
Atas ialah kandungan terperinci Memperkenalkan Enjin JavaScript Nashorn. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

Perbincangan mengenai realisasi kesan animasi tatal dan elemen Parallax dalam artikel ini akan meneroka bagaimana untuk mencapai yang serupa dengan laman web rasmi Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ... ...

Pembelajaran JavaScript tidak sukar, tetapi ia mencabar. 1) Memahami konsep asas seperti pembolehubah, jenis data, fungsi, dan sebagainya. 2) Pengaturcaraan asynchronous tuan dan melaksanakannya melalui gelung acara. 3) Gunakan operasi DOM dan berjanji untuk mengendalikan permintaan tak segerak. 4) Elakkan kesilapan biasa dan gunakan teknik debugging. 5) Mengoptimumkan prestasi dan mengikuti amalan terbaik.

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

Bagaimana cara menggabungkan elemen array dengan ID yang sama ke dalam satu objek dalam JavaScript? Semasa memproses data, kita sering menghadapi keperluan untuk mempunyai id yang sama ...

Terokai pelaksanaan fungsi seretan panel dan drop panel seperti VSCode di bahagian depan. Dalam pembangunan front-end, bagaimana untuk melaksanakan vscode seperti ...
