JavaPoly.js: لایبرری جاوااسکریپتی برای ساپورت JVM در مرورگر

JavaPoly.js: لایبرری جاوااسکریپتی برای ساپورت JVM در مرورگر

JavaPoly.js یک لایبرری است که با استفاده از آن می‌توان JVM (ماشین مجازی جاوا) را در داخل مرورگر اجرا کرد. JavaPoly.js این امکان را به دولوپرها می‌دهد تا کدهای نوشته شده با زبان جاوا را با استفاده از زبان جاوااسکریپت در داخل مرورگر اجرا کنند. 

JavaPoly.js این امکان را به کاربران می‌دهد تا حتی اگر جاوا روی سیستم آنها نصب نباشد، بتوانند کدهای جاوا را داخل مرورگر اجرا کنند. برای مثال، به سورس زیر توجه کنید:

<!-- Include the Polyfill -->
<script src="https://www.javapoly.com/javapoly.js"></script>

<!-- Write your Java code -->
<script type="text/java">
  package com.demo;
  import com.javapoly.dom.Window;

  public class Greeter
  {
    public static void sayHello(String name)
    {
      Window.alert("Hello " + name + ", from Java!");
    }
  }
</script>

<!-- Invoke your Java code from Javascript -->
<script type="text/javascript">
  com.demo.Greeter.sayHello("world");
</script>

علاوه بر این، بسیاری از لایبرری‌های زبان Java را نیز به سادگی ایمپورت کردن لایبرری‌های جاوااسکریپت، می‌توان به داخل برنامه اضافه کرد:

<!-- Include the Polyfill -->
<script src="https://www.javapoly.com/javapoly.js"></script>

<!-- Include your favorite Java libraries (jar files) -->
<script type="text/java" src="http://www.yourdomain.com/jimboxutilities.jar"></script>
<script type="text/java" src="http://www.yourdomain.com/guava.jar"></script>
<script type="text/java" src="http://www.yourdomain.com/apache-commons.jar"></script>

<!-- Or, include individual .class files -->
<script type="text/java" src="http://www.yourdomain.com/com/yourpackage/Foo.class"></script>
<script type="text/java" src="http://www.yourdomain.com/com/yourpackage/Noise.class"></script>

<!-- Or just include the source directly -->
<script type="text/java" src="http://www.yourdomain.com/com/yourpackage/Bar.java"></script>
<script type="text/java" src="http://www.yourdomain.com/com/yourpackage/Girls.java"></script>

سپس لایبرری‌های ایمپورت شده را از طریق جاوااسکریپت به واسطهٔ نام کامل‌شان می‌توان فراخوانی کرد:

<script type="text/javascript">
  com.yourpackage.Foo.doSomething();
  com.yourpackage.Noise.doSomethingElse();
</script>

نکته‌ای که در ارتباط با این لایبرری باید مد نظر داشت، این است که زبان برنامه‌نویسی جاوا اصطلاحاً Multi-threaded است اما این در حالی است که زبان جاوااسکریپت Single-threaded است؛ لذا مادامی که مرورگر صبر می‌کند تا JavaPoly.js پاسخی را بازگرداند، به منظور جلوگیری از توقف کار مرورگر، تمامی فراخوانی‌های JVM اصطلاحا Asynchronous (نامتقارن) هستند:

var promise = com.mypackage.MyClass.getSomeValue();
promise.then(function(result) {
  console.log(result); // "Stuff worked!"
}, function(err) {
  console.log(err); // Error: "It broke"
});

نظر شما دربارهٔ JavaPoly.js چیست؟ آیا این لایبرری می‌تواند ارتباط تنگاتنگی مابین زبان‌های محبوب جاوا و جاوااسکریپت ایجاد کند؟ نظرات خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.