'\" 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 برای اشیاء دوردست با استفاده از JRMP یا IIOP، و همچنین تولید OMG IDL .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fBrmic\fR [ \fIoptions\fR ] \fIpackage\-qualified\-class\-names\fR .fi .sp .TP \fIoptions\fR گزینه‌های خط فرمان\&. بخش «گزینه‌ها» را ببینید\&. .TP \fIpackage-qualified-class-names\fR نام‌های کلاس که شامل نام بسته (package) آن‌ها نیز می‌شود، برای نمونه \f3java\&.awt\&.Color\fR\&. .SH "توضیحات (DESCRIPTION)" \fIیادداشت منسوخ‌سازی:\fR پشتیبانی از تولید ایستا برای 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) را برای اشیاء راه دور تولید می‌کند\&. این فایل‌های کلاس از روی کلاس‌های کامپایل‌شده زبان برنامه‌نویسی Java که کلاس‌های پیاده‌سازی شیء راه دور هستند، تولید می‌شوند\&. یک کلاس پیاده‌سازی راه دور، کلاسی است که رابط \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 است که دارای متدی برای هدایت و ارسال فراخوانی‌ها به پیاده‌سازی شیء راه دور است\&. .PP یک tie برای شیء راه دور، یک موجودیت سمت سرور مشابه skeleton است، اما با استفاده از پروتکل IIOP با کلاینت ارتباط برقرار می‌کند\&. .PP یک stub یک پروکسی سمت کلاینت برای شیء راه دور است که مسئولیت انتقال فراخوانی‌های متد روی اشیاء راه دور را به سروری که پیاده‌سازی واقعی شیء راه دور در آن قرار دارد، بر عهده دارد\&. بنابراین، ارجاع یک کلاینت به یک شیء راه دور، در واقع ارجاعی به یک stub محلی است\&. .PP به‌صورت پیش‌فرض، دستور \f3rmic\fR کلاس‌های stub را تنها با استفاده از نسخه پروتکل 1\&.2 JRMP stub تولید می‌کند، درست مانند اینکه گزینه \f3-v1\&.2\fR مشخص شده باشد\&. گزینه \f3-vcompat\fR در نسخه‌های پیش از 5\&.0 پیش‌فرض بود\&. برای تولید کلاس‌های stub و tie برای پروتکل IIOP از گزینه \f3-iiop\fR استفاده کنید\&. بخش گزینه‌ها را ببینید\&. .PP یک stub تنها رابط‌های راه دور را پیاده‌سازی می‌کند، نه رابط‌های محلی را که شیء راه دور ممکن است آن‌ها را نیز پیاده‌سازی کرده باشد\&. از آنجا که یک stub در JRMP همان مجموعه رابط‌های راه دورِ شیء راه دور را پیاده‌سازی می‌کند، کلاینت می‌تواند از عملگرهای توکار زبان برنامه‌نویسی Java برای تبدیل نوع و بررسی نوع (casting و type checking) استفاده کند\&. برای IIOP، باید از متد \f3PortableRemoteObject\&.narrow\fR استفاده شود\&. .SH "گزینه‌ها (OPTIONS)" .TP -bootclasspath \fIpath\fR .br مکان فایل‌های کلاس bootstrap را بازنویسی (override) می‌کند\&. .TP -classpath path .br مسیری را که دستور \f3rmic\fR برای یافتن کلاس‌ها استفاده می‌کند مشخص می‌سازد\&. این گزینه در صورت تنظیم، مقدار پیش‌فرض یا متغیر محیطی \f3CLASSPATH\fR را بازنویسی می‌کند\&. دایرکتوری‌ها با دو‌نقطه (:) از یکدیگر جدا می‌شوند\&. قالب کلی مسیر به این صورت است: \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 مکان افزونه‌های نصب‌شده (installed extensions) را بازنویسی می‌کند\&. .TP -g .br تولید تمام اطلاعات اشکال‌زدایی (debugging)، از جمله متغیرهای محلی را فعال می‌کند\&. به‌صورت پیش‌فرض، فقط اطلاعات شماره خط تولید می‌شود\&. .TP -idl .br باعث می‌شود دستور \f3rmic\fR برای کلاس‌های مشخص‌شده و هر کلاسی که به آن ارجاع داده شده، OMG IDL تولید کند\&. زبان IDL روشی کاملاً توصیفی و مستقل از زبان برنامه‌نویسی برای مشخص کردن API یک شیء فراهم می‌آورد\&. این زبان به عنوان مشخصه‌ای برای متدها و داده‌هایی به کار می‌رود که می‌توان آن‌ها را در هر زبانی که اتصالات CORBA را ارائه می‌دهد نوشت و از آن‌ها فراخوانی کرد\&. این زبان‌ها شامل Java و 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 تولید مجدد را اجباری می‌کنند، حتی اگر stubs/ties/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 تولید مجدد را اجباری می‌کنند، حتی اگر stubs/ties/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 خروجی جلوگیری می‌کند\&. این متدها و مقداردهنده‌های اولیه برای valuetypes اختیاری هستند و تولید می‌شوند مگر اینکه گزینه \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 را تعریف می‌کند\&. در زبان برنامه‌نویسی Java، نوع \f3Servant\fR به کلاس \f3Java org\&.omg\&.PortableServer\&.Servant\fR نگاشت می‌شود\&. این کلاس به عنوان کلاس پایه برای تمامی پیاده‌سازی‌های servant در POA عمل می‌کند و تعدادی متد را فراهم می‌آورد که می‌توانند توسط برنامه‌نویس فراخوانی شوند، و همچنین متدهایی که توسط POA فراخوانی شده و می‌توانند توسط کاربر برای کنترل جنبه‌هایی از رفتار servant بازنویسی (override) شوند\&. بر اساس مشخصات OMG IDL to Java Language Mapping Specification, CORBA V 2\&.3\&.1 ptc/00-01-08\&.pdf\&. .RE .TP -J .br در صورت استفاده با هر دستور Java، گزینه \f3-J\fR آرگومان بعد از \f3-J\fR را (بدون فاصله بین \f3-J\fR و آرگومان) به مفسر Java ارسال می‌کند\&. .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 پروتکل JRMP stub را تولید می‌کند\&. این گزینه در انتشار‌های پیش از 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 پروتکل JRMP stub تولید می‌کند\&. گزینه \f3-v1\&.1\fR تنها برای تولید کلاس‌های stub کاربرد دارد که از نظر سریال‌سازی با کلاس‌های stub از پیش موجود و مستقرشده به صورت ایستا که توسط دستور \f3rmic\fR از JDK 1\&.1 تولید شده‌اند و امکان ارتقای آن‌ها وجود ندارد (و بارگذاری پویای کلاس استفاده نمی‌شود)، سازگار باشند\&. نکته: این گزینه منسوخ شده است\&. بخش توضیحات را ببینید\&. .TP -v1\&.2 (deprecated) .br (پیش‌فرض) کلاس‌های stub را تنها برای نسخه 1\&.2 پروتکل JRMP stub تولید می‌کند\&. هیچ کلاس 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