cari
Rumahhujung hadapan webtutorial jsMemperkenalkan Enjin JavaScript Nashorn

Introducing the Nashorn JavaScript Engine

Oracle telah membangunkan enjin JavaScript baru yang dipanggil Nashorn dalam bahasa pengaturcaraan Java dan mengeluarkannya dengan Java 8. Matlamat Nashorn adalah untuk melaksanakan persekitaran runtime JavaScript yang ringan dan berprestasi tinggi di Java dan menggunakan JVM asli. Dengan menggunakan Nashorn, pemaju boleh membenamkan JavaScript dalam aplikasi Java dan memanggil kaedah dan kelas Java dari kod JavaScript.

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.
Di samping itu, tiada siapa yang memutuskan bahawa Nashorn tidak termasuk ciri debugging dan tidak menyokong perpustakaan/rangka kerja CSS dan JavaScript. Ini bermakna Nashorn boleh dilaksanakan dalam penyemak imbas tanpa menjadi mimpi ngeri.

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!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Python vs JavaScript: Keluk Pembelajaran dan Kemudahan PenggunaanPython vs JavaScript: Keluk Pembelajaran dan Kemudahan PenggunaanApr 16, 2025 am 12:12 AM

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 vs JavaScript: Komuniti, Perpustakaan, dan SumberPython vs JavaScript: Komuniti, Perpustakaan, dan SumberApr 15, 2025 am 12:16 AM

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.

Dari C/C ke JavaScript: Bagaimana semuanya berfungsiDari C/C ke JavaScript: Bagaimana semuanya berfungsiApr 14, 2025 am 12:05 AM

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: Membandingkan PelaksanaanEnjin JavaScript: Membandingkan PelaksanaanApr 13, 2025 am 12:05 AM

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.

Beyond the Browser: JavaScript di dunia nyataBeyond the Browser: JavaScript di dunia nyataApr 12, 2025 am 12:06 AM

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.

Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend)Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend)Apr 11, 2025 am 08:23 AM

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

Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend)Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend)Apr 11, 2025 am 08:22 AM

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: meneroka serba boleh bahasa webJavaScript: meneroka serba boleh bahasa webApr 11, 2025 am 12:01 AM

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.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.