اسکالا و جاوا


#1

آیا زبان های jvm هم مثل دات نت امکان استفاده از کدهای هم دیگر رو دارند (‌ مثلا ترکیب اسکالا ، jruby ، جاوا )؟


#2

بله این یکی از بزرگترین قدرتشونه


#3

یعنی الان امکانش هست که یه کتابخونه با jruby بنویسم و بعد با جاوا یا اسکالا کار کنم!


#4

بله امکانش موجوده من خودم با jruby زیاد کار نکردم که بدونم چقدر راحته ولی چون جفتشون رو JVM هستن باید بشه


#5

زبان روبی و کتابخانه غنی جاوا ، دلیل محکمی بود که به سمت اش بیام . ولی در مورد جاوا یکم مشکلات هست ، مثلا امکان ساخت فایل اجرایی نداره؟ ( البته منظورم فایل اجرایی با فرمت exe و غیرقابل decode کردن در همه پلتفرم‌ها، مخصوصا لینوکس)


#6

سکالا native میتونی به executable compile کنی

جاوا یا سکالا معمولی هم اگه اجرا کننده JRE داشته باشه میتونه اجرا کنه خروجی یک file compile میشه که بهش uber jar میگن

جدیدا یک vm جدید oracle بنام Graal اومده برای کار با روبی python و زبان های jvm

http://www.scala-native.org/en/latest/index.html

https://www.graalvm.org/


#7
  • بله در مورد هر دو اینا خوندم ، در مورد GraalVM که دو نسخه داره ، نسخه ce فقط برای لینوکس هست ،‌ و نسخه enterprise هم برای لینوکس و مک ( فکر کنم پولی هم هست ) .

  • مشکل هم همین جاست فایل های jar قابل decode کردن هستن!

  • یه راه حل میتونه این باشه که کدهای جاوا و jruby رو در اسکالا import کرد و بعد به native کامپایل کرد. البته اجرای اسکالا هم رو llvm به صورت بتا است ،‌ و زیاد هم در موردش نخوندم


#8

لینک ای که مشخص کردین برعکس موضوع هست یعنی استفاده کلاس های جاوا در jruby !


#9

جفتشو داره تو لینک


#10

دارم کدها رو نگاه می‌کنم ، در کدها اینطور نیست!


#11

کده هردوش هست دقت کنید


#12

CallMe.java و ISpeaker.java که توسط call_java.rb فراخوانی میشن

require "java"

java_import "java.util.TreeSet"
java_import "com.example.CallMe"
java_import "com.example.ISpeaker"

اگه امکانش هست مشخص کنید


#13

لینک گذاشته زیره همون لینک به این :

package vanilla;

import org.jruby.embed.ScriptingContainer;

public class HelloWorld {

    private HelloWorld() {
        ScriptingContainer container = new ScriptingContainer();
        container.runScriptlet("puts 'Hello World!'");
    }

    public static void main(String[] args) {
        new HelloWorld();
    }
}

#14

باید کدهای jruby رو به صورت Script داخل برنامه جاوا نوشت؟ امکان این که کلاس های jruby به برنامه جاوا import بشه نیست؟

مثل سی شارپ که شما dll رو میسازید و بعد در دیگر زبان‌های دات نت امکان using هست! و اصلا مهم نیست با چه زبانی نوشته شده.


#15

با این جم میتونی از jruby
Jar درست کنی import کنی
https://rubygems.org/gems/warbler

چرا به jruby نیاز داری حتما؟


#16

syntax روبی و gem هاش


#17

جم هاشو که اکثرا نمیتونی تو jruby استفاده کنی


#18

با توجه به محدودیت پاسخ ، این پیام رو ویرایش می کنم!


با اجرای دستور warble در پوشه اصلی.

No executable script found
C:/Ruby25-x64/bin/warble:23:in `load'
C:/Ruby25-x64/bin/warble:23:in `<main>'
Tasks: TOP => jar:files
(See full trace by running task with --trace)

تنها دستوری که کار کرد warble compiled بود که فایل class میسازه ،


#19

۹۹ درصد جم های روبی با jruby کار نمیکنند


#20

چرا‌نمیشه؟
اینجا توضیح داده با کامند میشه executable یا runnable ساخت

یا حتی gemjar