Что такое язык сценариев, который понимает типы данных и может быть реализован на Java? - PullRequest
2 голосов
/ 09 июня 2009

Я ищу язык сценариев, который соответствует следующим критериям:

  • Хорошо задокументировано
  • Реализовано в Java
  • Понимает типы данных (может обрабатывать длинные, строки и т. Д.)
  • Полностью расширяемый

Есть предложения? В настоящее время я использую Javascript, но значения Doubles, которым он устанавливает числа, недостаточно велики для работы с данными, которую я выполняю.

Спасибо!

Ответы [ 6 ]

4 голосов
/ 09 июня 2009

Groovy

В частности, Groovy может использоваться в качестве языка сценариев, но не обязательно, и построен на основе Java. Это не порт Java другого языка, что означает, что он более тесно интегрируется с Java, чем JRuby / Jython, хотя это могло измениться с тех пор, как я в последний раз смотрел их.

Что касается документации для Groovy, вы можете купить Groovy в действии (plug plug;)

2 голосов
/ 09 июня 2009

Python и Ruby имеют реализации Java (ищите Jython и JRuby).

0 голосов
/ 15 февраля 2012

Clojure или Groovy были бы моими рекомендациями.

Ответ Джона уже содержит некоторые подробности о Groovy, поэтому вот еще немного о Clojure:

  • Это Лисп, поэтому он легко расширяется и отлично подходит для создания DSL
  • Он написан на чистом Java, поэтому вы можете легко встраивать его в Java-приложение
  • Это очень динамично, отлично подходит для интерактивных сценариев на REPL

В частности, взаимодействие с Java очень просто: объекты Clojure являются объектами Java и наоборот, и вы можете вызывать методы напрямую:

;; create a string
(def s "Hello World")

;; inspect its type
(class s)
=> java.lang.String

;; call a method 
(.length s)
=> 11

;; count the characters (Clojure can treat Strings as a sequence of characters)
(frequencies s)
=> {\H 1, \e 1, \l 3, \o 2, \space 1, \W 1, \r 1, \d 1}
0 голосов
/ 10 июня 2009

Что вы имеете в виду: «Удваивает то, что устанавливает числа, недостаточно для работы с данными, которую я делаю». Двойники одинакового размера на большинстве языков AFAIK.

Сколько точности вам нужно? Возможно, BigDecimal для вас, если вам нужно более 16 цифр точности.

0 голосов
/ 09 июня 2009

Я не уверен, что вы подразумеваете под "понимает типы данных". Если вы имеете в виду, что он имеет строки, числа и т. Д., То JavaScript, Groovy, Python и Ruby являются одними из многих языков, которые хорошо интегрируются с Java. Если вы ищете статически типизированный язык, я не уверен.

Что касается проблемы двойных значений, которые недостаточно велики в JavaScript, вы можете размещать объекты Java BigDecimal (или объекты BigInteger) из своего кода JavaScript. Таким образом, представление чисел не должно быть проблемой для вас.

0 голосов
/ 09 июня 2009

LuaJava может быть. Все числа представляются внутри как двойные в lua.

...