2016-09-01 4 views
0

제 3 자 개발자가 시스템의 기능을 확장 할 수 있도록하기 위해 스크립팅 언어 사용에 대해 생각하고 있습니다.Java 웹 응용 프로그램을 사용자 정의하기 위해 사용할 JVM 스크립팅 언어는 무엇입니까?

그냥 내 목표에 대한 아이디어를 제공합니다 ... 이벤트가 트리거되면 스크립팅 언어는 일반적인 기능을 제공하는 VM 공간에서 일부 개체를 호출해야합니다 (예 : BD에 개체 저장, 전자 메일 보내기).

비슷한 상황에서 몇 년 전 나는 BeanShell을 사용했으며 정상적으로 작동했습니다. 프로젝트처럼 보이는 웹 사이트를 확인하는 것이 약간 구식입니다.

요즘 몇 가지 예를 들어, Groovy, Scala이라는 몇 가지 VM 언어가 있습니다. 내가 고려해야 할 사항은 무엇입니까? 비슷한 환경에서 경험이 있습니까?

+0

타이머, 스케줄러, http 지원 및 시스템 호출에 대한 라이브러리의 최우선 지원이 선택의 우선 순위가되어야합니다. JVM의 대부분의 언어는 자바 라이브러리에 응답 할 수 있기 때문에 지원을받을 것입니다 – pamu

+0

그리고 자바 9도 REPL이 올 것입니다. 스칼라가 너무 높은 목표 일 수 있습니다. JavaScript는 못생긴 (imho). 그러나 가장 접근하기 쉽고 Java Scripting API를 사용할 수 있습니다. –

+0

scala에는 akka, akka-http, Java 라이브러리를 사용한 라이브러리 및 시스템 호출 지원이 있습니다. 정적이라면 기능적 언어가 도움이 될 것입니다. – pamu

답변

3

Groovy는 C/Java 언어 제품군과 구문 론적으로 유사하며, 의미 상 Ruby/Python/Smalltalk을 기반으로합니다. 매끄러운 학습 곡선을 가지고 있어야하고, 픽업하기가 어렵고 즉시 생산성을 발휘해서는 안됩니다 (클라이언트에게 문제가있는 경우).

그것은 예를 들어, 쉽게 데이터베이스에 저장된 일부 스크립트를 평가하는 데 사용되는, GroovyShellEval 기능 : 그렇지 않으면 당신을이 너무 원료이며 샌드 박스의 어떤 종류를해야 할 수도 있음을

result = Eval.me """ 
    a = 1 + 2 
    b = 3 + 4 
    a + b 
""" 

assert result == 10 

주 클라이언트가 System.exit처럼 더러운 것을 할 수 있습니다. 이러한 시나리오에는 compiler customizersgroovy-sandbox이 있습니다. 또한 add type checking through compiler customization도 가능합니다.

+0

추천 해 주셔서 감사합니다. 적어도 두 가지 핵심 기능을 언급했다고 생각합니다. 샌드 박싱, 학습 곡선. –