```
(defun read-image (pathname)
- (jstatic "read" "javax.imageio.ImageIO" (jnew "java.io.FileInputStream" (namestring pathname))))
+ (jstatic "read" "javax.imageio.ImageIO" (jnew "java.io.File" (namestring pathname))))
```
Though with a combination of JSS and cached lookup it could be nicer,
```
(defvar +image-io+ (jclass "javax.imageio.ImageIO"))
-(defvar +file-input-stream+ (jclass "java.io.FileInputStream"))
+(defvar +file+ (jclass "java.io.File"))
(defun read-image (pathname)
- (#"read" +image-io+ (jnew +file-input-stream+ (namestring pathname))))
+ (#"read" +image-io+ (jnew +file+ (namestring pathname))))
```
At this point without other improvements (auto-coercion of pathnames,
want the Java side to receive a Lisp object. Having a special variable
to *disable* conversion might be enough for these purposes.
+If we were to forego the nice properties of JSS by requiring a function
+form, the following would be another option:
+
+```
+(defun read-image (pathname)
+ $(read 'ImageIO (new 'FileInputStream pathname)))
+```
+
+Where `$(...)` would be special syntax indicating a Java method call.
+Of course the exact syntax is not very relevant, more importantly static
+properties could be used to generate a faster, early bound call by
+examining the supplied arguments as a limited form of type inference.
+
## Summary
After introducing the necessary steps to start using ABCL with "native"