Java from Perl; Perl from Java
From JmPm
Contents |
Perl - Java Similarities
• Interpreted languages
• Platform independent ( write once run anywhere )
• Similar syntax ( procedural languages )
• Garbage collector
• Modules and packages structure
Differences
• Java 100% object oriented , in Perl OO is optional ( function overloading does not exist )
• Java requires compilation , Perl doesn’t
• Java does not allow multiple inheritance , Perl does. ( Object == UNIVERSAL )
• Java has strong typing ( requires variable declaration ), Perl has not – variable gets it type after first assignment.
• autoload mechanism
• Do we need strong typing ? ( strong testing ? )
• Java is rigid , Perl has many ways to say same thing
• Perl has many shell like features ( variable interpolation , file test operators ). Java has none.
• In Java execution starts in main(), Perl has no main , ( __DATA__ feature )
• Perl is much FASTER in development and execution
Why do we need it ?
• Legacy components access
• Code transition from some language to perl
• Speed ( C , not Java )
• Component exist in other language and we want to use it in Perl
Inline
• Inline , Inline::Java
• Easy installation
• Short learning curve
• Hides all details ( compilation , glue files )
• Inline has extension to many other languages – C , C++ , Python …
• Older tools XS , SWIG.
• Manual steps, long learning curve , only perl to XXX direction
Perl2Java
• Methods invocation ( regular and static )
• Member variables access
• Study
• Script or package code layout
inline::java steps
• Creates java source file from the embedded code ( Hi.java )
• Compiles java class ( Hi.java -> Hi.class )
• Extracts the methods signatures to Hi.jdat file
Java2Perl
• Implemented by Inline::Java::PerlInterpreter
• Alternative implementation based on
– JNI defines a standard naming and calling convention so the Java virtual machine can locate and invoke native methods
– perl from C invocation , modified examples code from O’Reilly Advanced Perl Programming
• Two basic problems :
– Functions in perl can be called with variable number of parameters and output variable number of values – Parameters can have different types