[index]

Poor Man's Java for Macintosh: JNI $B$9$k(B


$B4D6-(B

  1. MRJ SDK 2.1.4 / MRJ SDK 2.2 Early Access 2
  2. MPW-PR (with MPW Shell 3.5f7, MrC 4.1, etc)

MRJ SDK $BFb$N(B MPW Tools $B$O!"I,MW$,$"$l$P(B "{MPW}User Commands" $B$K%3%T!<$7$F$*$/!#(B

$B:G=i$K$d$k$3$H(B

  1. $B$[$s$H$K(B JNI $B$r;H$o$J$1$l$P$J$i$J$$$N$+!"$h$/$h$/9M$($k!#(B
  2. $B;H$&$H7h$a$?$i!"$I$N%a%=%C%I$rBP>]$H$9$k$+$r7h$a$k!#(B
  3. $B6&M-%i%$%V%i%jL>$r7h$a$k!#(B

$B
  1. java $B%=!<%9$r=q$/!#(B
    1. $B6&M-%i%$%V%i%j$r%m!<%I$9$k$3$H!#(B
    2. native $B;XDj$7$?$7$+$k$Y$-%a%=%C%I$r4^$`$3$H!#(B
  2. java class $B$r@8@.$9$k!#(B
  3. C $B$N%X%C%@$r@8@.$9$k!#(B
  4. C $B$N%=!<%9$r=q$/!#(B
  5. $B6&M-%i%$%V%i%j$H$7$F(B make $B$9$k!#(B
  6. $B6&M-%i%$%V%i%j$rE,@Z$J0LCV$KG[CV$7!"F0$+$9!#(B

(MPW $B>e$G(B java $B$k$J$i$P(B) MPW Tools $BFb$N(B java tools

classpath $B$r@_Dj$7$F$*$/!#(B

Set -e classpath ':,HD:system:extentions:MRJ Libraries:MRJClasses:JDKClasses.zip,
HD:system:extentions:MRJ Libraries:MRJClasses:MRJClasses.zip,
HD:system:extentions:MRJ Libraries:MRJClasses'

$B$J$I!#(B $B>e5-$r5-=R$7$?(B script $B%U%!%$%k$r(B "{MPW}Startup Items" $B$KF~$l$F$*$/!#(B

Java $B%=!<%9$r=q$/!#(B

$B$3$s$J46$8!#(B
    public class Hogehoge {
        static {
            try {
                System.loadLibrary("hogeLib");
            }
            catch (UnsatisfiedLinkError e) {
                System.err.println("can't load library.");
            }
        }
        public native String nativeMethod();
    }

Java $B%=!<%9$r%3%s%Q%$%k$7$F(B class $B%U%!%$%k$rF@$k!#(B

Roaster $B$+$i$J$i(B Project $B%a%K%e!<$+$i(B make (command + m) $B$rA*$V$@$1!#(BMPW $B%D!<%k$O(B JDK $B$HF1$8$J$N$G(B javac $B$G2B$$!#(B

javah $B$G(B C $B$N%X%C%@$r@8@.$9$k!#(B

MPW Tools $BFb$N(B java tools

$B%Q%C%1!<%8L>$,%G%#%l%/%H%jL>$K%^%C%W$5$l$k$N$G!"3+;O0LCV$KCm0U!#%Q%C%1!<%8AjBP%G%#%l%/%H%j$N%H%C%W$K5o$J$1$l$P$J$i$J$$!#(B

MRJ SDK/Tools/JDK Tools/javah

$B%Q%C%1!<%8L>$,%G%#%l%/%H%jL>$K%^%C%W$5$l$k$N$G!"3+;O0LCV$KCm0U!#%Q%C%1!<%8AjBP%G%#%l%/%H%j$N%H%C%W$K5o$J$1$l$P$J$i$J$$!#(B $B%Q%C%1!<%8AjBP%G%#%l%/%H%j$N>e$+$i%U%)%k%@$4$H%I%m%C%W$7$F!"(Bclasspath $B%U%#!<%k%I$r%(%G%#%C%H$9$l$P2B$$!#(B JNI-Style Prototypes $B$O(B disable $B$K$J$C$F$$$k$,!">o$K(B on $B>uBV(B (-jni) $B$J$s$@$=$&$J!#(B help $B%\%?%s$r2!$7$F$_$k$Y$7!#(B

$BNc(B: jni_sample_JNITest.h

C $B%=!<%9$r=q$/!#(B

export $B;XDj$,I,MW!#%j%s%/;~$K;XDj$9$kJ}K!$b$"$k$,!"(B #pragma $B$NJ}$,4JC1!#(B javah $B$,@8@.$7$?%X%C%@$N%$%s%/%k!<%I$rK:$l$:$K!#(B

$B$3$s$J46$8!#(B
    #pragma export on
    #include "header produced by javah."
    #include <stdio.h>
    #include <stdlib.h>

    #define MY_JNI_VERSION  ("1.0 build 1")

    JNIEXPORT jstring JNICALL Java_jni_sample_JNITest_getVersion
      (JNIEnv *env, jobject jobj)
    {
        return (*env)->NewStringUTF(env, MY_JNI_VERSION);
    }
    ($B8eN,(B)

MPW $B$G$N(B Create Build Commands...

Create Build Commands...
  1. $B%W%m%0%i%`L>$O!V%i%$%V%i%jL>(B + $B3HD%;R!W$r;XDj$9$k!#(B
  2. $B%=!<%9;XDj$r;XDj$9$k!#(B
  3. $B%W%m%0%i%`!&%?%$%W$O!"EvA3!"6&M-%i%$%V%i%j$r;XDj$9$k!#(B
  4. include path $B;XDj$K(B jni $B4X78$N%X%C%@!&%Q%9$rDI2C$9$k!#(B jni.h $B$O(B MRJ SDK/Interfaces&Libraries/CIncludes $B$K$"$k!#(B MPW $B$N(B include path $B$K%3%T!<$7$F$b;H$($k$,!"$=$N>l9g$O(B jni_md.h $B$bK:$l$J$$$h$&$K!#(B
  5. $B@8@.$9$k%i%$%V%i%j$N%U%!%$%kL>$O(B java $B$N%=!<%9$G$N(B System.loadLibrary() $B$KEO$9%i%$%V%i%jL>$H9gCW$7$F$$$J$1$l$P$J$i$J$$!#(B ($B3HD%;R$r=|$/(B)
CreateMake Options.
Other Options.

$B$3$l$rAv$i$;$k$H!"(B make $B%U%!%$%k!V%W%m%0%i%`L>(B + .make$B!W$,F@$i$l$k(B

make $B%U%!%$%k$r=$@5$9$k!#(B

$B$3$l$G(B make $B0lH/$G6&M-%i%$%V%i%j$,$G$-$l$PJ86g$J$$$N$@$,!"$b$&0l2U=j-fragname {LibraryName} $B$,I,MW!#(B $B%i%$%V%i%jL>$b(B java $B$N%=!<%9$G$N(B System.loadLibrary() $B$KEO$9%i%$%V%i%jL>$H9gCW$7$F$$$J$1$l$P$J$i$J$$!#(B $B%j%s%/!&%*%W%7%g%s$G;XDj$rDI2C$9$k!#(B

    ($BA0N,(B)
    LibraryName  = "hogeLib"
    ($BCfN,(B)
    myJNITest.shlib ÄÄ {¥MondoBuild¥} {Objects¥PPC}
        PPCLink ¶
            -fragname {LibraryName} ¶ ($B
($B!V%+!W$K8+$($k$N$O(B option + d, $B!V%H!W$K8+$($k$N$O(B option + f)

$BNc(B: myJNITest.shlib.make

$B6&M-%i%$%V%i%j!&%U%!%$%k$r@8@.$9$k!#(B

Nuild $B%a%K%e!<$+$i(B Build... / Full Build... $B$r;XDj!#%;%C%7%g%s$N:G=i$N0l2s$@$1%W%m%0%i%`L>$r?R$M$F$/$k$N$GEz$($F$d$k!#(B

$B6&M-%i%$%V%i%j$N0LCV$O(B?

  1. $B%"%W%j%1!<%7%g%s$,Jz$($k!#(B
  2. $B%"%W%j%1!<%7%g%s$HF1$80LCV!#(B (JBindery $B$G(B java $B%"%W%j%1!<%7%g%s$r@8@.$7$J$1$l$P!"$3$N>l9g$N!V%"%W%j%1!<%7%g%s!W$O(B JBindery $B$r0UL#$9$k$N$GCm0U(B)
  3. extentions $B%U%)%k%@!#(B
  4. extentions/MRJ Libraries $B%U%)%k%@!#(B ($B$3$3$N%5%V!&%G%#%l%/%H%j$O%9%-%c%s$5$l$J$$!#(Bextentions/MRJ Libraries/MRJClasses $B$O%@%a(B)

Roaster $B$N(B Project $B%a%K%e!<(B $B$+$i(B Run with Apple MRJ (cmd + r) $B$GAv$i$;$k$H!"%+%l%s%H!&%G%#%l%/%H%j$K(B JBindery document (Crtt: jint, Type: jrun) $B$,$G$-$k!#$3$l$r0lEY(B JBindery $B$K%I%m%C%W%$%s$7$F%"%W%j%1!<%7%g%s$K$7$F$*$/!#$s$G!"6&M-%i%$%V%i%j$b$3$3$KCV$$$F$*$1$P$h$$!#0lEY%"%W%j%1!<%7%g%s2=$7$F$$$F$b!":FEY(B JBindery $B$K%I%m%C%W%$%s$9$l$P!"3F

$BM>O?(B

$B%G%P%C%0L\E*$G(B printf $B$,;H$($k!#(BMPW $B$G:n$C$?(B shlb $BFb$GI8=`=PNO$K=q$-=P$9$H!"%U%!%$%k$K%j%@%$%l%/%H$7$F$/$l$k$N$G$"$k!#$"$j$,$?$d!#(B MPW $B$G(B Squeak $B$r:n$C$F$_$l$PH=$k$h$&$K!"%"%W%j%1!<%7%g%s$G$b!"I8=`=PNO$K=q$-=P$9$H%U%!%$%k$K%j%@%$%l%/%H$7$F$/$l$k$N$G$"$k!#(B


Created: Jan, 2000.
[index]