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!

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.


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

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Dreamweaver Mac版
Alat pembangunan web visual

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.