Java�J����Web 2.0�ɑΉ�������uRestlet�v�v���W�F�N�g

Java�J���‹���Web 2.0�ɑΉ�������I�[�v���\�[�X�v���W�F�N�g���o�������BJava Servlet API���REST�v���b�g�t�H�[�����쐬����uRestlet�v�ƌĂ΂��v���W�F�N�g���B

» 2006�N01��10�� 08��30�� ���J
[Darryl K. Taft�CeWEEK]
eWEEK

�@Java�J���‹���Web 2.0�J���҂̃j�[�Y�ɑΉ�������Ƃ������Ɏ��g�ރI�[�v���\�[�X�v���W�F�N�g���o�������B���̃v���W�F�N�g�́ARepresentational State Transfer�iREST�j�A�[�L�e�N�`���X�^�C����Java�ŃT�|�[�g���邱�Ƃ�ڎw���B

�@�t�����X�̃��o���A�y���ݏZ�̊J���ҁA�W�F���[���E���[�x�����́AJava Servlet API���REST�v���b�g�t�H�[�����쐬���邽�߂ɁA�uRestlet�v�ƌĂ΂��v���W�F�N�g�𗧂��グ���B

�@Noelios Consulting�̑n�Ǝ҂ł��郋�[�x�����͌��݁AJava�J���ƃr�W�l�X�v���Z�X��������Ƃ���Ɨ��R���T���^���g�Ƃ��Ċ��􂵂Ă���B�����ɂ��ƁARestlet�v���W�F�N�g�ɂ����鎩�g�̖����́A�uREST�A�[�L�e�N�`���X�^�C���̃V���v�����ƌ�����Java�J���҂ɒ񋟂���v���Ƃ��Ƃ����B

�@���������[�x�����́A�gSOAP�iSimple Object Access Protocol�j��REST���h�Ƃ����_���𕜊�������‚���͂Ȃ��Ƃ��Ă���B�u���łɂ��̖��͉��x���_�c���ꂽ�v���炾�B

�@Servlet API��1998�N�ɓo�ꂵ�Ĉȗ��AHTTP�T�[�o��œ��I�R���e���c�𐶐����邽�߂̎�i�Ƃ��čL�͂ɗ��p����Ă����B

�@���[�x������Restlet�v���W�F�N�g�ɂ‚��Đ������������̒��ŁA�uServlet API�͊�{�I�ɁA�I�u�W�F�N�g�w�����f���Ɋ�Â���HTTP���N�G�X�g�^�����T�C�N����\�����悤�Ƃ���v�Əq�ׂĂ���B

�@�uServlet API�́A���̎o���֌W�ɂ���Java Server Pages�K�i�ƂƂ��ɁAJava�Z�p����Ɠ��ɐi�o������Ƃ�����K�͂Ȏ��g�݂̈ꕔ�ɂȂ����v�i�����j

�@�������AServlet API��Web 2.0�J���̂��߂̍őP�̎�@�ł͂Ȃ��悤���A�ƃ��[�x�����͌��BREST���T�|�[�g�������Ƃ��������̊肢��Restlet�v���W�F�N�g�n�݂̓��@�������Ƃ����B

�@�u�I�u�W�F�N�g�w���Ƃ����p���_�C���́A���G�ȏW���^���f���ɂ͗L�������AWeb�J���ɂ͕K�������K���Ă��Ȃ��v�ƃ��[�x�����͎w�E����B

�@�uJava�J���҂́A�V����Web�T�[�r�X��Ajax�x�[�X��Web�N���C�A���g���J������ۂɂ��̂��Ƃ�F�����A���gREST�I�Ɂh�l����悤�ɂ��Ȃ���΂Ȃ�Ȃ��BRestlet�v���W�F�N�g�́A������Web 2.0�̊J���Ɏ�肩���邽�߂̃V���v�����Œ��S�Ȋ�Ղ�񋟂���v�i�����j

�@���������[�x�����ɂ��ƁARestlet��Ruby on Rails��Struts�Ȃǂ�Web 2.0�J���t���[�����[�N�����D��Ă��邩�ǂ����^�₾�Ƃ���J���҂�����Ƃ����B

�@�u�ŋ߂킽����Web�T�C�g�̊J���ɒ��肵�����Ƃ��ARestlet�v���W�F�N�g�Ɏ��g�ނ��������ƂȂ����B���̃T�C�g���A�ł��邾��REST�A�[�L�e�N�`���X�^�C���ɏ������������Ǝv�����B���낢��ƒ��ׂ����ʁAJava�ɂ�REST�t���[�����[�N���������Ă��邱�ƂɋC�Â����v�ƃ��[�x�����͐�������B

�@���̂��߃��[�x�����́AServlet API��œƎ���REST�t���[�����[�N���쐬�����Ƃ����B�u����I��REST�R�[���𒼐ڐ�������ŏ���Restlet�R�l�N�^�iHTTP�T�[�o�R�l�N�^�j�̊J���ɐ��������v�Ɠ����͘b���B

�@����ɓ����́A�uJava�ł�Web�̃N���C�A���g�T�C�h�ƃT�[�o�T�C�h�̃r���[���s���R�ɕ�������Ă���A���̏󋵂������������Ǝv�����v�Əq�ׂĂ���B

�@�u�l�b�g���[�N�����ꂽ�����̊‹��ł́A������������ʂ�݂���ׂ��ł͂Ȃ��B��������̂�Web�N���C�A���g�Ƃ��ē��삷��Ɠ����ɁAWeb�T�[�o�Ƃ��Ă�����ł���悤�ɂ��Ȃ���΂Ȃ�Ȃ��BREST�ł́A������R���|�[�l���g���N���C�A���g�R�l�N�^�ƃT�[�o�R�l�N�^�������‚ł��ێ����邱�Ƃ��ł���̂ŁA�킽����HttpURLConnection�N���X���x�[�X�Ƃ���N���C�A���gHTTP�R�l�N�^�������J�������v�i�����j

�@���[�x�����͂��̌�ARestlet�v���W�F�N�g��2�‚̕����ɕ������邱�Ƃɂ����Ƃ����B

�@�ŏ��̕����́ARestlet API�ƌĂ΂��ėp�I�ȃC���^�t�F�[�X�Z�b�g�A������Restlet�C���v�������e�[�V������o�^���邽�߂̃w���p�[�N���X�ł���B

�@�v���W�F�N�g�̑�2�̕����́ARestlet API�̃��t�@�����X�C���v�������e�[�V�����ŁA�uNRE�v�iNoelios Restlet Engine�j�ƌĂ΂��B����ɂ́AHTTP�T�[�o�R�l�N�^�AHTTP�^JDBC�iJava Database Connector�j�^SMTP�iSimple Mail Transfer Protocol�j�p�̃N���C�A���g�R�l�N�^�A�e��̕\���̂ق��A�f�B���N�g���c���[����ÓI�ȃt�@�C����񋟂��邱�Ƃ��ł���uDirectoryRestlet�v���܂܂��BDirectoryRestlet�́A�g���q�Ɋ�Â������R���e���c�l�S�V�G�[�V�����@�\�������Ƃ����B

�@���[�x�����ɂ��ƁARestlet API�́A���\�[�X�A�\���A�f�[�^�A�R�l�N�^�A�R���|�[�l���g�Ȃ�REST�̃R���Z�v�g�����ׂăT�|�[�g����Ƃ����B

�@Restlet�͌��݃��e�X�g���ŁA�ŐV�����[�X�i�o�[�W����0.18�j�́Awww.restlet.org/downloads/restlet-0.18b.zip����_�E�����[�h�ł���B

�@Restlet API�����Noelios Restlet Engine�́ACDDL�iCommon Development and Distribution License�j�̉��Ŕz�z����Ă���B

�@Restlet�v���W�F�N�g�̈ˑ����Ƃ��ẮAJ2SE 5.0�iJava 5�Ƃ��Ă΂��j�AJetty 5.1.5�܂���6.0���AFreeMarker 2.3�AJavaMail 1.3�Ȃǂ��܂܂��B

Editorial items that were originally published in the U.S. Edition of �geWEEK�h are the copyrighted property of Ziff Davis Enterprise Inc. Copyright (c) 2011. All Rights Reserved.

'; e_dlv.innerHTML = html; adRequest({position:dlv_pos,dom:true}); }else if(ad_type === 'gam'){ var html = '
'; e_dlv.innerHTML = html; refreshGam('InArtSpecialLink'); }else if(ad_type === 'logly'){ var html = '
'; e_dlv.innerHTML = html; loglySet(g_id); }else if(ad_type === 'google'){ var html = '
'; e_dlv.innerHTML = html; googletag.cmd.push(function(){ var slot8 = googletag.defineSlot('/43042345/nlab_artinsert_RT',[[336,280],[300,250],'fluid'],'div-gpt-ad-1551176482959-0').addService(googletag.pubads()); googletag.pubads().enableSingleRequest(); googletag.enableServices(); googletag.display('div-gpt-ad-1551176482959-0'); googletag.pubads().refresh([slot8]); }); } }; var insert_ok = function(_target,_str){ var clearfix = d.createElement('div'); clearfix.className = 'colBoxClear'; if(ad_float_fix){ e_body.insertBefore(e_dlv,_target); e_body.insertBefore(clearfix,_target.nextElementSibling); }else{ e_body.insertBefore(e_dlv,_target); } set_dlv(); }; var insert_ng = function(_str){ e_dlv.style.display = 'none'; }; var main = function(){ var e_nodes = e_body.childNodes; // BODY �����q�v�f var e_tags = []; // BODY �����^�O var p_num = []; // BODY ���� P �^�O�ʒu var p_target_num; // �g�}����ʒu var o_float = {}; // ��荞�ݗv�f var o_this = {}; // �A�N�e�B�u�^�O var o_next = {}; // �A�N�e�B�u�^�O�̎��̃^�O var flag_insert = 0; // �}���t���O // ��荞�ݗv�f�`�F�b�N var check_float = function(_e){ var e = 0; if(_e.id.match(/^col\d{3}(l|r)$/)){ e = _e; } return e; }; // �v�f�� Y ���W�ƍ����̍��v�l var get_element_y = function(_e){ var ey = 0; var eh = _e.offsetHeight; while(_e){ ey += _e.offsetTop; _e = _e.offsetParent; } return ey + eh; }; var check_ptag = function(_e){ var e = 0; if(_e.tagName && _e.tagName === 'P'){ e = _e; } return e; }; var try_insert = function(){ p_target_num = Math.floor(p_num.length / 2) - 1; if(p_target_num >= _maxrange) p_target_num = _maxrange; if(dis_con) p_target_num = 0; for(var i = p_num[p_target_num]; i < e_tags.length; i++){ o_this.e = check_ptag(e_tags[i]); if(o_this.e){ o_next.e = check_ptag(e_tags[i + 1]); if(o_next.e){ if(!o_float.e || check_float(e_tags[i - 1])){ o_float.e = check_float(e_tags[i - 1]); o_float.n = i - 1; } if(o_float.e && o_float.n < i + 1){ o_float.y = get_element_y(o_float.e); o_this.y = get_element_y(o_this.e); set_line(o_float.y,'red'); set_line(o_this.y,'blue'); if(o_float.y < o_this.y){ flag_insert = 1; insert_ok(o_next.e,_threshold + ' �p���ȏ��荞�݂���'); break; } }else{ flag_insert = 1; insert_ok(o_next.e,_threshold + ' �p���ȏ��荞�݂Ȃ�'); break; } } }else{ o_float = {}; } } if(!flag_insert){ insert_ng('�}���ʒu�Ȃ�'); } }; // �S�q�v�f����^�O�̂ݔz��ɓ���� for(var i = 0; i < e_nodes.length; i++){ if(e_nodes[i].tagName){ e_tags.push(e_nodes[i]); } } // �S�^�O���� P �^�O�ʒu��z��ɓ���� for(var i = 0; i < e_tags.length; i++){ if(e_tags[i].tagName === 'P') p_num.push(i); // �ŏ��̉�荞�ݗv�f���i�[ if(!o_float.e){ o_float.e = check_float(e_tags[i]); o_float.y = get_element_y(o_float.e); o_float.n = i; } } if(p_num.length >= _threshold){ try_insert(); }else{ insert_ng('P �^�O ' + _threshold + ' �ȉ�'); } }; if(e_body){ main(); }else{ insert_ng('�L���{���Ȃ�'); } })(document,4,5);

�l�C�L�������L���O

���Ȃ��ɂ������߂̋L��PR