Если вы действительно хотите оценивать строки и не возражаете против использования s-выражений, вы можете использовать Clojure:
Clojure 1.0.0-
user=> (def s "(+ 7 3)")
#'user/s
user=> (load-string s)
10
user=>
Вот инструкции по вызову Clojure из Java
Если вы выберете этот путь, будьте осторожны, чтобы очистить строки перед их оценкой, иначе вы можете оставить себя открытыми для инъекционных атак.
Кстати, когда Clojure оценивает выражение, оно будет использовать BigInteger, если необходимо, например:
user=> (def s "(+ 1 2)")
#'user/s
user=> (def r (load-string s))
#'user/r
user=> (. r getClass)
java.lang.Integer
user=> (def s "(+ 1000000000000000000000000 20000000000000000000000)")
#'user/s
user=> (def r (load-string s))
#'user/r
user=> (. r getClass)
java.math.BigInteger
user=>