'\" t .\" Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. .\" .\" This code is free software; you can redistribute it and/or modify it .\" under the terms of the GNU General Public License version 2 only, as .\" published by the Free Software Foundation. .\" .\" This code is distributed in the hope that it will be useful, but WITHOUT .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License .\" version 2 for more details (a copy is included in the LICENSE file that .\" accompanied this code). .\" .\" You should have received a copy of the GNU General Public License version .\" 2 along with this work; if not, write to the Free Software Foundation, .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. .\" .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA .\" or visit www.oracle.com if you need additional information or have any .\" questions. .\" .\" Arch: generic .\" Software: JDK 8 .\" Date: 21 November 2013 .\" SectDesc: Remote Method Invocation (RMI) Tools .\" Title: rmic.1 .\" .if n .pl 99999 .TH rmic 1 "21 November 2013" "JDK 8" "Remote Method Invocation (RMI) Tools" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" rmic \- کلاس‌های stub، skeleton و tie را برای اشیاء دوردستی که از Java Remote Method Protocol (JRMP) یا پروتکل Internet Inter-Orb (IIOP) استفاده می‌کنند تولید می‌کند\&. همچنین Object Management Group (OMG) Interface Definition Language (IDL) را تولید می‌کند .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fBrmic\fR [ \fIoptions\fR ] \fIpackage\-qualified\-class\-names\fR .fi .sp .TP \fIoptions\fR گزینه‌های خط فرمان (\f3options\fR)\&. بخش گزینه‌ها را ببینید\&. .TP \fIpackage-qualified-class-names\fR نام‌های کلاس شامل نام بسته‌شان، برای نمونه \f3java\&.awt\&.Color\fR\&. .SH "توضیحات (DESCRIPTION)" \fIیادداشت منسوخ‌سازی:\fR پشتیبانی از تولید ایستان (static) کلاس‌های stub و skeleton مربوط به Java Remote Method Protocol (JRMP) منسوخ شده است\&. اوراکل توصیه می‌کند در عوض از stubهای به‌صورت پویا تولیدشدهٔ JRMP استفاده کنید که نیاز به استفاده از این ابزار را برای برنامه‌های مبتنی بر JRMP از میان می‌برد\&. برای اطلاعات بیشتر، مشخصات \f3java\&.rmi\&.server\&.UnicastRemoteObject\fR را در http://docs\&.oracle\&.com/javase/8/docs/api/java/rmi/server/UnicastRemoteObject\&.html ببینید\&. .PP کامپایلر \f3rmic\fR پرونده‌های کلاسی stub و skeleton را با استفاده از Java Remote Method Protocol (JRMP) و پرونده‌های کلاسی stub و tie (پروتکل IIOP) را برای اشیاء دوردست تولید می‌کند\&. این پرونده‌های کلاسی از کلاس‌های کامپایل‌شدهٔ زبان برنامه‌نویسی جاوا که کلاس‌های پیاده‌سازی شیء دوردست هستند تولید می‌شوند\&. یک کلاس پیاده‌سازی دوردست، کلاسی است که رابط \f3java\&.rmi\&.Remote\fR را پیاده‌سازی می‌کند\&. نام‌های کلاس در دستور \f3rmic\fR باید مربوط به کلاس‌هایی باشند که با موفقیت توسط دستور \f3javac\fR کامپایل شده‌اند و باید نام کامل بسته (fully package qualified) را داشته باشند\&. برای نمونه، اجرای دستور \f3rmic\fR بر روی پروندهٔ کلاس \f3HelloImpl\fR همان‌گونه که در اینجا نشان داده شده است، پروندهٔ \f3HelloImpl_Stub\&.class\fR را در زیرشاخهٔ hello (برگرفته از نام بستهٔ کلاس) ایجاد می‌کند: .sp .nf \f3rmic hello\&.HelloImpl\fP .fi .nf \f3\fP .fi .sp یک skeleton برای یک شیء دوردست، یک موجودیت سمت سرور در پروتکل JRMP است که متدی برای فرستادن (dispatch) فراخوانی‌ها به پیاده‌سازی شیء دوردست دارد\&. .PP یک tie برای یک شیء دوردست، یک موجودیت سمت سرور مشابه skeleton است، اما ارتباط با کلاینت را از طریق پروتکل IIOP برقرار می‌کند\&. .PP یک stub یک پروکسی سمت کلاینت برای یک شیء دوردست است که مسئول انتقال فراخوانی‌های متد بر روی اشیاء دوردست به سروری است که پیاده‌سازی واقعی شیء دوردست در آن قرار دارد\&. بنابراین، ارجاع کلاینت به یک شیء دوردست، در واقع ارجاعی به یک stub محلی است\&. .PP به‌طور پیش‌فرض، دستور \f3rmic\fR کلاس‌های stubای تولید می‌کند که تنها از نسخهٔ 1\&.2 پروتکل stub در JRMP استفاده می‌کنند، درست همانند حالتی که گزینهٔ \f3-v1\&.2\fR مشخص شده باشد\&. گزینهٔ \f3-vcompat\fR در انتشار‌های پیش از 5\&.0 حالت پیش‌فرض بود\&. برای تولید کلاس‌های stub و tie برای پروتکل IIOP، از گزینهٔ \f3-iiop\fR استفاده کنید\&. بخش گزینه‌ها را ببینید\&. .PP یک stub تنها رابط‌های دوردست را پیاده‌سازی می‌کند، نه رابط‌های محلی‌ای را که شیء دوردست نیز آن‌ها را پیاده‌سازی کرده است\&. از آنجا که یک stub در JRMP همان مجموعه رابط‌های دوردست شیء دوردست را پیاده‌سازی می‌کند، کلاینت می‌تواند از عملگرهای توکار زبان برنامه‌نویسی جاوا برای تبدیل نوع (casting) و بررسی نوع (type checking) استفاده کند\&. برای IIOP، باید از متد \f3PortableRemoteObject\&.narrow\fR استفاده شود\&. .SH "گزینه‌ها (OPTIONS)" .TP -bootclasspath \fIpath\fR .br مکان پرونده‌های کلاسی bootstrap را بازنویسی می‌کند\&. .TP -classpath path .br مسیری را که دستور \f3rmic\fR برای جستجوی کلاس‌ها استفاده می‌کند مشخص می‌سازد\&. این گزینه مقدار پیش‌فرض یا متغیر محیطی \f3CLASSPATH\fR (در صورت تنظیم بودن) را بازنویسی می‌کند\&. دایرکتوری‌ها با دونقطه (:) از یکدیگر جدا می‌شوند\&. قالب کلی برای path عبارت است از: \f3\&.:\fR، برای نمونه: \f3\&.:/usr/local/java/classes\fR\&. .TP -d \fIdirectory\fR .br دایرکتوری مقصد ریشه را برای سلسله‌مراتب کلاس‌های تولیدشده مشخص می‌کند\&. می‌توانید از این گزینه برای تعیین دایرکتوری مقصد برای پرونده‌های stub، skeleton و tie استفاده کنید\&. برای نمونه، دستور زیر کلاس‌های stub و skeleton مشتق‌شده از MyClass را در دایرکتوری /java/classes/exampleclass قرار می‌دهد\&. .sp .nf \f3rmic \-d /java/classes exampleclass\&.MyClass\fP .fi .nf \f3\fP .fi .sp اگر گزینهٔ \f3-d\fR مشخص نشده باشد، رفتار پیش‌فرض به‌گونه‌ای است که گویی \f3-d \&.\fR مشخص شده باشد\&. سلسله‌مراتب بستهٔ کلاس هدف در دایرکتوری جاری ایجاد می‌شود و پرونده‌های stub/tie/skeleton در درون آن قرار می‌گیرند\&. در برخی از انتشار‌های پیشین دستور \f3rmic\fR، اگر گزینهٔ \f3-d\fR مشخص نمی‌شد، سلسله‌مراتب بسته ایجاد نمی‌شد و همهٔ پرونده‌های خروجی مستقیماً در دایرکتوری جاری قرار می‌گرفتند\&. .TP -extdirs \fIpath\fR .br مکان افزونه‌های نصب‌شده را بازنویسی می‌کند\&. .TP -g .br تولید همهٔ اطلاعات اشکال‌زدایی، از جمله متغیرهای محلی را فعال می‌سازد\&. به‌طور پیش‌فرض، تنها اطلاعات شماره خط تولید می‌شود\&. .TP -idl .br باعث می‌شود دستور \f3rmic\fR برای کلاس‌های مشخص‌شده و هر کلاس مورد ارجاع، OMG IDL تولید کند\&. زبان IDL روشی کاملاً توصیفی و مستقل از زبان برنامه‌نویسی برای تعیین یک API برای شیء فراهم می‌آورد\&. از IDL به عنوان مشخصاتی برای متدها و داده‌هایی استفاده می‌شود که می‌توانند در هر زبانی که اتصالات CORBA را ارائه می‌دهد نوشته و فراخوانی شوند\&. این شامل جاوا، ++C و زبان‌های دیگر می‌شود\&. سند Java IDL: IDL to Java Language Mapping را در http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/idl/mapping/jidlMapping\&.html ببینید\&. هنگامی که گزینهٔ \f3-idl\fR استفاده می‌شود، گزینه‌های دیگر نیز شامل موارد زیر هستند: .RS .TP 0.2i \(bu گزینه‌های \f3-always\fR یا \f3-alwaysgenerate\fR تولید مجدد را اجبار می‌کنند، حتی اگر stubها/tieها/IDL موجود از کلاس ورودی جدیدتر باشند\&. .TP 0.2i \(bu گزینهٔ \f3-factory\fR از کلیدواژهٔ \f3factory\fR در IDL تولیدشده استفاده می‌کند\&. .TP 0.2i \(bu گزینهٔ \f3-idlModule\fR from J\f3avaPackage[\&.class]\fR\f3toIDLModule\fR نگاشت بستهٔ \f3IDLEntity\fR را مشخص می‌کند، برای نمونه: \f3-idlModule\fR\f3my\&.module my::real::idlmod\fR\&. .TP 0.2i \(bu گزینهٔ \f3-idlFile\fR\f3fromJavaPackage[\&.class] toIDLFile\fR نگاشت پروندهٔ \f3IDLEntity\fR را مشخص می‌کند، برای نمونه: \f3-idlFile test\&.pkg\&.X TEST16\&.idl\fR\&. .RE .TP -iiop .br باعث می‌شود دستور \f3rmic\fR به جای کلاس‌های stub و skeleton در JRMP، کلاس‌های stub و tie پروتکل IIOP را تولید کند\&. کلاس stub یک پروکسی محلی برای یک شیء دوردست است و توسط کلاینت‌ها برای فرستادن فراخوانی‌ها به سرور استفاده می‌شود\&. هر رابط دوردست نیازمند یک کلاس stub است که آن رابط دوردست را پیاده‌سازی کند\&. ارجاع کلاینت به یک شیء دوردست، ارجاعی به یک stub است\&. کلاس‌های tie در سمت سرور برای پردازش فراخوانی‌های دریافتی و هدایت آن‌ها به کلاس پیاده‌سازی مناسب استفاده می‌شوند\&. هر کلاس پیاده‌سازی نیازمند یک کلاس tie است\&. اگر دستور \f3rmic\fR را همراه با \f3-iiop\fR فراخوانی کنید، stubها و tieهایی منطبق با این قرارداد نام‌گذاری تولید می‌کند: .sp .nf \f3__stub\&.class\fP .fi .nf \f3__tie\&.class\fP .fi .nf \f3\fP .fi .sp .RS .TP 0.2i \(bu هنگامی که از گزینهٔ \f3-iiop\fR استفاده می‌کنید، گزینه‌های دیگر نیز شامل موارد زیر هستند: .TP 0.2i \(bu گزینه‌های \f3-always\fR یا \f3-alwaysgenerate\fR تولید مجدد را اجبار می‌کنند، حتی اگر stubها/tieها/IDL موجود از کلاس ورودی جدیدتر باشند\&. .TP 0.2i \(bu گزینهٔ \f3-nolocalstubs\fR به این معنی است که stubهای بهینه‌شده برای کلاینت‌ها و سرورهای درون یک پردازش یکسان ایجاد نشوند\&. .TP 0.2i \(bu گزینهٔ \f3-noValueMethods\fR باید همراه با گزینهٔ \f3-idl\fR استفاده شود\&. گزینهٔ \f3-noValueMethods\fR از افزودن متدها و مقداردهنده‌های اولیهٔ \f3valuetype\fR به IDL تولیدشده جلوگیری می‌کند\&. این متدها و مقداردهنده‌های اولیه برای valuetypeها اختیاری هستند و تولید می‌شوند، مگر اینکه گزینهٔ \f3-noValueMethods\fR همراه با گزینهٔ \f3-idl\fR مشخص شود\&. .TP 0.2i \(bu گزینهٔ \f3-poa\fR وراثت را از \f3org\&.omg\&.CORBA_2_3\&.portable\&.ObjectImpl\fR به \f3org\&.omg\&.PortableServer\&.Servant\fR تغییر می‌دهد\&. ماژول \f3PortableServer\fR برای Portable Object Adapter (POA) نوع محلی \f3Servant\fR را تعریف می‌کند\&. در زبان برنامه‌نویسی جاوا، نوع \f3Servant\fR به کلاس \f3Java org\&.omg\&.PortableServer\&.Servant\fR نگاشت می‌شود\&. این کلاس به عنوان کلاس پایه برای تمام پیاده‌سازی‌های servant در POA عمل می‌کند و تعدادی متد ارائه می‌دهد که می‌توانند توسط برنامه‌نویس برنامه فراخوانی شوند، و متدهایی که توسط POA فراخوانی می‌شوند و کاربر می‌تواند آن‌ها را برای کنترل جنبه‌های رفتار servant بازنویسی کند\&. بر اساس مشخصات OMG IDL to Java Language Mapping Specification، سند CORBA V 2\&.3\&.1 ptc/00-01-08\&.pdf\&..RE .TP -J .br همراه با هر دستور جاوا، گزینهٔ \f3-J\fR آرگومان بعد از \f3-J\fR را (بدون فاصله بین \f3-J\fR و آرگومان) به مفسر جاوا ارسال می‌کند\&. .TP -keep or -keepgenerated .br پرونده‌های منبع \f3\&.java\fR تولیدشده را برای کلاس‌های stub، skeleton و tie نگه می‌دارد و آن‌ها را در همان دایرکتوری پرونده‌های \f3\&.class\fR می‌نویسد\&. .TP -nowarn .br هشدارها را خاموش می‌کند\&. هنگامی که از گزینهٔ \f3-nowarn\fR استفاده می‌شود، کامپایلر هیچ هشداری چاپ نمی‌کند\&. .TP -nowrite .br کلاس‌های کامپایل‌شده را بر روی سیستم فایل نمی‌نویسد\&. .TP -vcompat (deprecated) .br کلاس‌های stub و skeletonای تولید می‌کند که با هر دو نسخهٔ 1\&.1 و 1\&.2 پروتکل stub در JRMP سازگار باشند\&. این گزینه در انتشار‌های پیش از 5\&.0 حالت پیش‌فرض بود\&. کلاس‌های stub تولیدشده هنگام بارگذاری در ماشین مجازی JDK 1\&.1 از نسخهٔ 1\&.1 پروتکل stub استفاده می‌کنند و هنگام بارگذاری در ماشین مجازی 1\&.2 (یا بالاتر) از نسخهٔ 1\&.2 پروتکل stub استفاده می‌کنند\&. کلاس‌های skeleton تولیدشده از هر دو نسخهٔ 1\&.1 و 1\&.2 پروتکل stub پشتیبانی می‌کنند\&. کلاس‌های تولیدشده برای پشتیبانی از هر دو حالت عملکردی نسبتاً بزرگ هستند\&. نکته: این گزینه منسوخ شده است\&. بخش توضیحات را ببینید\&. .TP -verbose .br باعث می‌شود کامپایلر و پیونددهنده پیام‌هایی دربارهٔ اینکه چه کلاس‌هایی در حال کامپایل هستند و چه پرونده‌های کلاسی در حال بارگذاری هستند چاپ کنند\&. .TP -v1\&.1 (deprecated) .br کلاس‌های stub و skeleton را تنها برای نسخهٔ 1\&.1 پروتکل stub در JRMP تولید می‌کند\&. گزینهٔ \f3-v1\&.1\fR تنها برای تولید کلاس‌های stubای مفید است که از نظر سری‌سازی با کلاس‌های stub از پیش موجود و مستقر به صورت ایستا (که توسط دستور \f3rmic\fR از JDK 1\&.1 تولید شده‌اند و امکان ارتقای آن‌ها وجود ندارد و از بارگذاری پویای کلاس نیز استفاده نمی‌شود) سازگار باشند\&. نکته: این گزینه منسوخ شده است\&. بخش توضیحات را ببینید\&. .TP -v1\&.2 (deprecated) .br (پیش‌فرض) کلاس‌های stub را تنها برای نسخهٔ 1\&.2 پروتکل stub در JRMP تولید می‌کند\&. هیچ کلاس skeletonای تولید نمی‌شود زیرا کلاس‌های skeleton در نسخهٔ 1\&.2 پروتکل stub استفاده نمی‌شوند\&. کلاس‌های stub تولیدشده هنگامی که در یک ماشین مجازی JDK 1\&.1 بارگذاری شوند کار نمی‌کنند\&. نکته: این گزینه منسوخ شده است\&. بخش توضیحات را ببینید\&. .SH "محیط (ENVIRONMENT)" .TP CLASSPATH برای مشخص کردن مسیری به سیستم جهت یافتن کلاس‌های تعریف‌شده توسط کاربر به کار می‌رود\&. دایرکتوری‌ها با دونقطه از هم جدا می‌شوند، برای نمونه: \f3\&.:/usr/local/java/classes\fR\&. .SH "همچنین ببینید (SEE ALSO)" .TP 0.2i \(bu javac(1) .TP 0.2i \(bu java(1) .TP 0.2i \(bu تنظیم مسیر کلاس (Setting the Class Path) .RE .br 'pl 8.5i 'bp