diff --git a/com.oracle.truffle.r.pkgs/rJava/NAMESPACE b/com.oracle.truffle.r.pkgs/rJava/NAMESPACE
index 20c27039014d4fc3a4125f92e4f5960410723234..1e1eb30c84f13ea28d8ff269af6bff007c690969 100644
--- a/com.oracle.truffle.r.pkgs/rJava/NAMESPACE
+++ b/com.oracle.truffle.r.pkgs/rJava/NAMESPACE
@@ -1,5 +1,6 @@
 # Generated by roxygen2: do not edit by hand
 
+export(.jaddClassPath)
 export(.jarray)
 export(.jbyte)
 export(.jcall)
@@ -12,5 +13,7 @@ export(.jinit)
 export(.jlong)
 export(.jnew)
 export(.jnull)
+export(.jpackage)
 export(.jshort)
 export(.jsimplify)
+export(J)
diff --git a/com.oracle.truffle.r.pkgs/rJava/R/rj.R b/com.oracle.truffle.r.pkgs/rJava/R/rj.R
index eb18a8713c1f47f2d7739a9fd41cf8bbbc28590d..3d3b8a59d271ed2576bceda40d2541cfa2b66490 100644
--- a/com.oracle.truffle.r.pkgs/rJava/R/rj.R
+++ b/com.oracle.truffle.r.pkgs/rJava/R/rj.R
@@ -24,6 +24,7 @@
     simplify = FALSE, use.true.class = FALSE) 
 {
     if(is.character(obj)) {
+        obj <- gsub("/", ".", as.character(obj))
         co <- .fastr.java.class(obj)
         r <- co[method](...)
     } else {
@@ -91,6 +92,18 @@
     invisible(x)
 }
 
+#' @export
+J <- function (class, method, ...) 
+{    
+    class <- gsub("/", ".", as.character(class))
+    javaClass <- .fastr.java.class(class)
+    if (nargs() == 1L && missing(method)) {
+        javaClass
+    } else {
+        .jcall(javaClass, ,method, ...)
+    }    
+}
+
 #
 # noop stubs
 #
@@ -117,3 +130,31 @@
 {    
     # do nothing
 }
+
+#' @export
+.jpackage <- function (name, jars='*', morePaths='', nativeLibrary=FALSE, lib.loc=NULL)
+{    
+    javalibs <- system.file("java", package = name, lib.loc = lib.loc)
+    if(javalibs == "") {
+        javalibs = paste0("library/", name, "/java")
+    }
+    cat(paste0("********************************************************\n",
+               "*** WARNING!!!\n",
+               "*** .jpackage is not yet implemented.\n",
+               "*** Please ensure that all java libraries from:\n",
+               "*** ", javalibs, "\n",
+               "*** are on FastR classpath\n",
+               "********************************************************\n"))
+}
+
+#' @export
+.jaddClassPath <- function (path)
+{
+    cat(paste0("********************************************************\n",
+               "*** WARNING!!!\n",
+               "*** .jaddClasPath is not yet implemented.\n",
+               "*** Please ensure that \n",
+               "*** ", path, "\n",
+               "*** is on FastR classpath\n",
+               "********************************************************\n"))
+}
\ No newline at end of file
diff --git a/com.oracle.truffle.r.pkgs/rJava/tests/testthat/testJ.R b/com.oracle.truffle.r.pkgs/rJava/tests/testthat/testJ.R
new file mode 100644
index 0000000000000000000000000000000000000000..92de8cc5060f4d7047173dea91bbf681c56d0590
--- /dev/null
+++ b/com.oracle.truffle.r.pkgs/rJava/tests/testthat/testJ.R
@@ -0,0 +1,20 @@
+# prerequisites:
+# - 'testthat' package has to be installed: install.packages("testthat")
+# - FastR`s rJava package has to be installed: bin/r CMD INSTALL com.oracle.truffle.r.pkgs/rjava
+# - mxbuild/dists/fastr-unit-tests.jar has to be on FastR classpath
+
+library(testthat)
+library(rJava)
+
+testName <- "test J function"
+test_that(testName, {
+    cat(paste0(testName, "\n"))
+    tc <- J("com.oracle.truffle.r.test.library.fastr.TestJavaInterop$TestClass")
+    expect_equal(2147483647L, tc$fieldStaticInteger)
+
+    tc <- J("com/oracle/truffle/r/test/library/fastr/TestJavaInterop$TestClass")
+    expect_equal(2147483647L, tc$fieldStaticInteger)
+
+    expect_equal(2147483647L, J("com.oracle.truffle.r.test.library.fastr.TestJavaInterop$TestClass", "methodStaticInteger"))
+    expect_equal(2147483647L, J("com/oracle/truffle/r/test/library/fastr/TestJavaInterop$TestClass", "methodStaticInteger"))
+})
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/fastr/TestJavaInterop.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/fastr/TestJavaInterop.java
index f3f274fc6ee0030cf7941ecaafe8fe718f730dc6..f9852832d2f60e5024c9e54cda373f4d034e6794 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/fastr/TestJavaInterop.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/fastr/TestJavaInterop.java
@@ -445,24 +445,24 @@ public class TestJavaInterop extends TestBase {
 
     public static class TestClass {
 
-        public static boolean fieldStaticBoolean;
-        public static byte fieldStaticByte;
-        public static char fieldStaticChar;
-        public static short fieldStaticShort;
-        public static int fieldStaticInteger;
-        public static long fieldStaticLong;
-        public static double fieldStaticDouble;
-        public static float fieldStaticFloat;
-
-        public static Boolean fieldStaticBooleanObject;
-        public static Byte fieldStaticByteObject;
-        public static Character fieldStaticCharObject;
-        public static Short fieldStaticShortObject;
-        public static Integer fieldStaticIntegerObject;
-        public static Long fieldStaticLongObject;
-        public static Double fieldStaticDoubleObject;
-        public static Float fieldStaticFloatObject;
-        public static String fieldStaticStringObject;
+        public static boolean fieldStaticBoolean = true;
+        public static byte fieldStaticByte = Byte.MAX_VALUE;
+        public static char fieldStaticChar = 'a';
+        public static short fieldStaticShort = Short.MAX_VALUE;
+        public static int fieldStaticInteger = Integer.MAX_VALUE;
+        public static long fieldStaticLong = Long.MAX_VALUE;
+        public static double fieldStaticDouble = Double.MAX_VALUE;
+        public static float fieldStaticFloat = Float.MAX_VALUE;
+
+        public static Boolean fieldStaticBooleanObject = fieldStaticBoolean;
+        public static Byte fieldStaticByteObject = fieldStaticByte;
+        public static Character fieldStaticCharObject = fieldStaticChar;
+        public static Short fieldStaticShortObject = fieldStaticShort;
+        public static Integer fieldStaticIntegerObject = fieldStaticInteger;
+        public static Long fieldStaticLongObject = fieldStaticLong;
+        public static Double fieldStaticDoubleObject = fieldStaticDouble;
+        public static Float fieldStaticFloatObject = fieldStaticFloat;
+        public static String fieldStaticStringObject = "a string";
 
         public boolean fieldBoolean;
         public byte fieldByte;