���W�F�g�ݍ��݂ɂ��𗧂�Java�ƃl�C�e�B�u�R�[�h�̋��n��

JNI���ȒP��Java��C/C++���‚Ȃ��uJNA�v�Ƃ�


�x�m�\�t�g�������
���� ��
2009/12/14


C/S�ł́A�T�[�o�T�C�h��C/C++���܂��܂����

����̎�ȓ��e

�E C/S�ł́A�T�[�o�T�C�h��C/C++���܂��܂����
�E JNI���g���₷�������uJNA�v�Ƃ�

�E JNA�𗘗p���邽�߂̊�{�I�ȗ���
�E Java��C/C++�̃}�b�s���O���@�A6�p�^�[��
�E JNA�A�v���P�[�V�����̃A�[�L�e�N�`��
�E JNI�����ێ琫�����߂�JNA

�@�C���^�[�l�b�g�̕��y�ɉ����āA���b�`�N���C�A���g�^RIA�̔��W�ƂƂ��ɁA�A�v���P�[�V�����̌`�Ԃ́AC/S�i�N���C�A���g/�T�[�o�j�V�X�e������AWeb�A�v���P�[�V�����V�X�e���ɃV�t�g���Ă��܂��B��ʂ̏�񔭐M�V�X�e�������ł͂Ȃ��A��Ƃ̊���V�X�e���܂ŁA�����Web�A�v���P�[�V�����ō\�z����悤�ɂȂ�܂����B

�@���̕ω��̎���ł���Ƃ�����AJava�Z�p�́AWeb�A�v���P�[�V�����V�X�e���̔��W�ƂƂ��ɁA�l�b�g���[�N�̐e�a����A�v���b�g�t�H�[���K�p�̑��l���ŁA�L���󂯓�����āAWeb�A�v���P�[�V�����V�X�e���J���̊�ՋZ�p�ɂȂ��Ă��܂��B

�@����܂ł�C/S�V�X�e���ł́A�T�[�o���W�b�N��C/C++�Ŏ��������P�[�X����ʓI�ł����BC/S�V�X�e������Web�A�v���P�[�V�����V�X�e���ɃV�t�g����ۂɁAJava�Z�p�𓱓����邱�Ƃ����߂��ꍇ�AJava�Z�p�ŁA���ׂĐV�K�J������̂�1�‚̑I�����ł����A�����ڍs���邽�߂ɁA�����̃\�t�g�E�F�A���Y���ė��p����̂��A����1�‚̑I�����ł��傤�B

�� �\����Java�A������C/C++�Ƃ������K�V�[�ڍs

�@�‚܂�AWeb�v���[���e�[�V�����T�[�r�X�w��Java�Z�p�Ŏ������āA�r�W�l�X���W�b�N�w�͈��肵��C/C++�ŏ����ꂽ�������W���[�����ė��p���܂��B���̂Ƃ��AJava��Web�v���[���e�[�V�����T�[�r�X�w��C/C++�̃r�W�l�X���W�b�N�w��A�g���邽�߂ɁAJava����C/C++�̃l�C�e�B�u���C�u����API���Ăяo���Z�p���K�v�ł��B

�@����AJava�Z�p�̔��W��A�v���b�g�t�H�[���̑��l���ƂƂ��ɁAWeb�T�[�o���W�b�N�̎��������ł͂Ȃ��AJava�Z�p��GUI�A�v���P�[�V�������J������P�[�X�������Ă��܂��B�������Ȃ���A�v���b�g�t�H�[����OS��A�f�o�C�X�h���C�o�Ȃǂ��قƂ��C++�ŏ�����Ă��錻��ŁA�l�C�e�B�uAPI�𗘗p����ɂ́A��͂�Java����C/C++�̃l�C�e�B�u���C�u����API���Ăяo���Z�p���K�v�ł��B

�� �uJNI�v���ĂȂ����������H

�@�����̃A�v���P�[�V�����V�X�e���\�z�ɂ����鋤�ʓ_�́AJava����C/C++�̃l�C�e�B�u���C�u����API���Ăяo���Z�p���K�v�ɂȂ邱�Ƃł���AJava�Z�p�ł́A�����̃j�[�Y�𖞂������߂ɁAJNI�iJava Native Interface�j�d�l�Ǝ�����񋟂��Ă��܂��B

�@�������A���ۂɃR�[�f�B���O�����Ă݂�ƁA�ώG�ŁA�Ȃ��܂Ȃ��R�[�f�B���O���������āA���\�b�h�̃}�b�s���O��f�[�^�̃}�b�s���O�ɒǂ��Ă��܂��A�̐S�ȃr�W�l�X���W�b�N�ɏW���ł��܂���B���p�̃n�[�h���͍����A�g�[�^���ł̓V�X�e���J���̐��Y�������҂����ʂ�ɂ͂Ȃ炸�A����ɃV�X�e���S�̂̕ێ琫�ቺ���������܂��B

�@�{���W�ł́A�V�X�e���J���̐��Y������̂��߂ɒ���JNI�𗘗p�����A��r�I���p�n�[�h�����ႢJNA�iJava Native Access�j���C�u�����𗘗p������@���Љ�܂��B�Ȃ��AC/C++�ɂȂ��݂̂Ȃ��ǎ҂͉��L�L�����Q�Ƃ��Ă����Ă��������B

JNI���g���₷�������uJNA�v�Ƃ�

�@JNA�Ƃ́A����JNI�𗘗p�����AJava�v���O�������ȒP�Ƀl�C�e�B�u���C�u�����i.dll�A���邢�́A.so�j�����L������@��񋟂��郉�C�u�����ł��B

�@�@�\�I�ɂ́A.NET��P/Invoke�iPlatform Invoke�j��APython��ctypes�Ɨގ����Ă��܂��B���ʏ������K�v�ƂȂ�z��Ȃǂ̕��G�ȃf�[�^�^���g���ꕔ��API�������΁AC/C++�̃R�[�h���������AJava�v���O�������l�C�e�B�u���C�u����API���Ăяo����̂ŁA�V�X�e���J���̐��Y�������サ�܂����A�ێ琫���ቺ���邱�Ƃ�����܂���B

�� �T�|�[�g����v���b�g�t�H�[��

�@���ɁAJNA��p���ĊJ������GUI�A�v���P�[�V�����́A�����I�Ƀ}���`�v���b�g�t�H�[���ɑΉ����邽�߁A�v���b�g�t�H�[�����ӎ������J���ł��܂��BJNA�T�C�g�ɂ��ƁAJNA�͈ȉ��̃v���b�g�t�H�[�����T�|�[�g���Ă��܂��B

  • Windows�ix86�Ax86_64�j
  • Linux�ix86�AAMD64�j
  • FreeBSD/OpenBSD�ix86�AAMD64�j
  • Solaris�ix86�AAMD64�ASPARC�ASPARC V9�j
  • Mac OS X�iPPC�Ax86�Ax86-64�j

�@�ŋߐl�C�̃��o�C���v���b�g�t�H�[��Android�ɑ΂���T�|�[�g�ɂ‚��Ă��b��ƂȂ��Ă��āA�����ɂ͗��p�ł��邱�Ƃ����҂������ł��B�ŋ߂��g�ݍ��ݕ���ł�Java���i�o���Ă��Ă��āA�K�p����͍L���Ǝv���܂��B �ق��ɂ��A���܂��܂ȂƂ���Ŏg���Ă���̂ŁA����v���ڂ̃��C�u�����Ƃ�����ł��傤�B

�� JNA�̐�������

�@JNA�́A���T���E�}�C�N���V�X�e���Y�̊J���҂�NetBeans IDE���J�����邽�߂ɁA�J������܂����B���߂Č��J���ꂽ�̂�1999�N�ł�����A���ł�10�N�ȏ�o�߂��Ă���A2006�N�ɃI�[�v���\�[�X�Ƃ��Ĕ��\����܂����B�Ȍ���A�@�\�����₳��A�T�|�[�g����v���b�g�t�H�[���������A�C�O�ł͑����ȃv���W�F�N�g�ɍ̗p����Ă��܂��B���݂��A�V���������[�X�����X���J����Ă���A�����ɊJ���������Ă��܂��B

�� JNI���x�[�X��

�@JNA�́AJNI���x�[�X�Ƃ��Ă��܂��B�]���āA���\�ʂł�JNI���I�[�o�[�w�b�h�������Ǝv���܂��B�������AJNA�̓��������ł́A�f�[�^�^�̕ϊ��͍œK������Ă��܂��̂ŁAJNI��p���鎩�O�������A�K�����Ƃ͂����܂���B

�@�܂��A�n�[�h�E�F�A���\�̐i���������āA�ނ���V�X�e���J���̐��Y���������S����D�悷�邱�Ƃ��l������ł��傤�B

�� JNA�̎�ȋ@�\

�@�N���X�v���b�g�t�H�[���⌾��Ԃ̌Ăяo���ɂ́A�f�[�^�^�̃}�b�s���O�ƃ��\�b�h�i�֐��j�̃}�b�s���O���A��Ȏ��������ł��BJNA�́A�J���҂̕��S���y�����邽�߂ɁA�ȉ��̎�ȋ@�\��񋟂��A�����T�|�[�g���Ă���܂��B

  • �l�C�e�B�u���C�u�����̃}�b�s���O
  • �l�C�e�B�u���\�b�h�iAPI�j�̃}�b�s���O
  • �f�[�^�̃}�[�V�������O�i�e�v���O���~���O����̃l�C�e�B�u�ȃf�[�^�\�������ʃf�[�^�`���ɕϊ����鏈���j

�@�f�[�^�̃}�[�V�������O�ł́A�قƂ�ǂ̃v���~�e�B�u�ȃf�[�^�^�͎����I�Ƀ}�b�s���O���Ă���܂��B�������A�z��^��l�X�g�\���̃f�[�^�^�Ȃǂ́AC��Java�̔z��ɑ΂���������@�̍��ق�����̂ŁA�f�[�^���}�b�s���O���邽�߂̕⏕���[�e�B���e�B�𗘗p���Ď��O�Ŏ�������K�v������܂��B����ɂ‚��ẮA��ŏڂ����Љ�܂��B

�� JNA�̓���

�@JNA�́AJNA�̃T�C�g����_�E�����[�h�ł��܂��B2009�N11���̌��e���M�����݂̍ŐV�o�[�W������3.2.3�ŁA�̗p���Ă��郉�C�Z���X��LGPL 2.1�܂��͂���ȍ~�ł��B

�� JNA�𗘗p����J���‹��̍\�z

�@�_�E�����[�h������A�C���X�g�[����Ƃ͕K�v����܂���B���肵���ujna.jar�v�t�@�C�����J������A�v���P�[�V�������O�����C�u�����Ƃ��āA�P�����N���X�p�X��ʂ������ł��B

�@jna.jar�p�b�P�[�W�́A�f�[�^�}�b�s���O�p��Java�T�u�p�b�P�[�W�������‚��܂݂܂��B���̂ق��AWindows��Solaris��Linux�Ȃǂ̃v���b�g�t�H�[���̃l�C�e�B�u���C�u����API�Ƀf�B�X�p�b�`���邽�߂̃��C�u�����i.dll��.so�j���܂܂�܂��B

  1-2-3-4

�@INDEX�@���W�u�g�ݍ��݂ɂ��𗧂�Java�ƃl�C�e�B�u�R�[�h�̋��n���v
Page1
  C/S�ł́A�T�[�o�T�C�h��C/C++���܂��܂����
JNI���g���₷�������uJNA�v�Ƃ�
  Page2
  JNA�𗘗p���邽�߂̊�{�I�ȗ���
Java��C/C++�̃}�b�s���O���@�A6�p�^�[��
�@�y1�z���C�u�����̃}�b�s���O
�@�y2�zAPI�̃}�b�s���O
�@�y3�z�v���~�e�B�u�f�[�^�^�̃}�[�V�������O
  Page3
  �@�y4�z�\���̌^�̃}�b�s���O
�@�y5�z�z��^�̃}�b�s���O
  Page4
  �@�y6�z����q�\���̌^�̃}�b�s���O
JNA�A�v���P�[�V�����̃A�[�L�e�N�`��
JNI�����ێ琫�����߂�JNA

Java Solution�S�L���ꗗ



Java Agile �t�H�[���� �V���L��
��IT���[���}�K�W���@�V������X�^�b�t�̃R���������[���œ͂��܂��i�����j

���ڂ̃e�[�}

Java Agile �L�������L���O

�{�� ����