دانلود رایگان ترجمه مقاله میان افزار جاوا سمفونی

logo-4

دانلود رایگان مقاله انگلیسی میان افزار جاوا سمفونی به همراه ترجمه فارسی

 

عنوان فارسی مقاله: میان افزار جاوا سمفونی
عنوان انگلیسی مقاله: Java Symphony middleware
رشته های مرتبط: مهندسی کامپیوتر، مهندسی نرم افزار
 فرمت مقالات رایگان مقالات انگلیسی و ترجمه های فارسی رایگان با فرمت PDF میباشند
 کیفیت ترجمه کیفیت ترجمه این مقاله عالی میباشد 
کد محصول F15

 مقاله انگلیسی رایگان

دانلود رایگان مقاله انگلیسی

ترجمه فارسی رایگان 

دانلود رایگان ترجمه مقاله
جستجوی ترجمه مقالات جستجوی ترجمه مقالات کامپیوتر

  

بخشی از ترجمه فارسی:

مقدمه
ازميان افزار JavaSymphony جهت ايجاد سيستم توزيع شده استفاده ميشود . اين ابزار يکي از كاراترين ميان افزار هاي طراحي شده جهت ساخت سيستم هاي توزيع شده است که برنامه نويس را از پرداختن به بسياري از جزئيات برنامه نويسي بي نياز مي کند.
در بخش۲ به معرفي JavaSymphony پرداخته, امكانات و توانايي هايي كه اين ابزار جهت ساخت سيستم هاي توزيع شده و موازي در اختيار برنامه نويس قرار مي دهد را معرفي کرده, نحوه استفاده از JavaSymphony براي برنامه نويسي و ساخت سيستم هاي توزيع شده به زبان جاوا, خصوصيات كلاس ها و توابع مختلف اين ابزار و ويژگي هاي آنها بيان مي شود. در بخش۳ امكانات پيشرفته تر JavaSymphony كه در نسخه هاي بعدي آن به منظور افزايش كارايي برنامه هاي ساخته شده توسط اين ابزار به آن اضافه شده (مانند تكنيك هاي همگام سازي پروسه ها, ايجاد اشيا چند نخي, بسط معماري مجازي, تبديل پويا اشيا و… ) را بررسي خواهيم كرد. در بخش ۴ نحوه نصب, راه اندازي و استفاده از JavaSymphony دركامپيوتر هاي مختلف شبكه براي ايجاد يك زير ساخت ارتباطي و تعريف معماري فيزيكي سيستم توزيع شده را بررسي خواهيم كرد.۲٫ مفاهيم اصلي JavaSymphony
اغلب سيستمهاي توزيع شده يا موازي كه به وسيله جاوا پياده سازي مي شوند نيازمند پرداختن برنامه نويس به كارهاي جزئي بسيار و خسته كننده هستندكه احتمالا منجر به اشتباه برنامه نويس نيز مي شوند. JavaSymphony يك ابزار برنامه نويسي جهت پياده سازي سيستم هاي توزيع شده و موازي است كه دامنه وسيعي از سيستم هاي همگن از سيستم هايي با خوشه هاي كوچك تا سيستم هاي محاسباتي وسيع را پشتيباني مي كند. اين ابزار تماما به زبان جاوا نوشته شده وبا تمام ماشينهاي مجازي جاوا (JVM) سازگاري دارد. مي توان گفت در مقايسه با ديگر ابزارهاي موجود، JavaSymphony امكانات بهتر و قابل انعطاف تري را براي مكان يابي اشياء و بارگذاري متعادل در اختيار برنامه نويس قرار مي دهد.
JavaSymphony در واقع يك كتابخانه از كلاس هاي جاوا است كه به برنامه نويس امكان كنترل Locality موازي سازي و بارگذاري متعادل را در سطح بالايي مي دهد, و برنامه نويس را از پرداختن به مسائل جزئي مانند ايجاد و استفاده از Remot-Proxy ها, برنامه نويسي نخ ها, برنامه نويسي سوكت ها و پردازش خطا ها بي نياز مي كند. به كمك اين ابزار يك معماري مجازي، ازگره هاي محاسباتي (كامپيوتر هاي شبكه ) تعريف مي شود. برنامه نويس مي تواند با تعريف معماري مجازي دلخواه خود، سلسله مراتبي ازگره هاي محاسباتي فيزيكي براي سيستم توزيع شده خود بسازد. اشياء برنامه مي توانند به صورت پويا در هر كدام از مؤلفه هاي اين معماري مجازي مستقرشده يا بين آنها حركت كنند. مجمو عه اي ازگره هاي سطح بالا جهت كنترل پارامترهاي مختلف نرم افزاري و سخت افزاري سيستم در دسترس است . اشياء مي توانند توسط فراخواني متدهاي يكديگر به سه روش سنكرون، آسنكرون و يك طرفه با يكديگر ارتباط برقرار كنند. بارگذاري كلاسهاي برنامه به صورت دلخواه در گره هاي مختلف محاسباتي نيز مي تواند موجب كاهش حافظه مورد نياز در كل سيستم توزيع شده شود. بعلاوه مي توان اشياء را به طور دائم در حافظه هاي جانبي ذخيره, نگهداري و بازيابي كرد.
اغلب پروژهاي تحقيقاتي كه يك زير ساخت نرم افزاري براي برنامه هاي توزيع شده وموازي ارائه مي كنند معمولا مانع از كنترل مكان استقرار اشياء توسط برنامه نويس مي شوند. با توجه به اينكه معمولا برنامه نويس اطلاعات بيشتروكامل تري در مورد ساختار سيستم توزيع شده و نحوه توزيع شده گي مطلوب اشياء بر روي شبكه را دارد از اين رو اكثر سيستم هاي توزيع شده كه توزيع اشياء درگره هاي محاسباتي و حركت بين آنها را به صورت اتوماتيك انجام مي دهند موجب كاهش كارايي سيستم توزيع شده خواهند شد. زيرا كه از اطلاعات مهمي كه برنامه نويس در مورد سيستم توزيع شده دارد استفاده نمي كنند و در نتيجه ممكن است ارتباط بين اشياء توزيع شده در شبكه با يكديگر زياد شده و كارايي كل سيستم بسيار پايين بيايد.

۲٫ ۱٫ ويژگي هاي Java Symphony
JavaSymphony يكي از ابزارهاي ساخت سيستمهاي توزيع شده و موازي است كه يك زير ساخت مناسب جهت ساخت برنامه هاي توزيع شده و موازي ارائه مي كند. همانطوركه گفته شد اين ابزار توسط زبان جاوا پياده سازي شده وبه صورت كتابخانه اي از كلاسهاي جاوا (.class) موجوداست كه مي توان از اين كلاس ها در هر برنامه نوشته شده به زبان جاوا استفاده كرد. برخي از خصوصيات مهم اين ابزار عبارتند از:
• امكان تعريف يك معماري مجازي توزيع شده: برنامه نويس مي تواند يك معماري مجازي براي سيستم توزيع شده خود تعريف كرده و به اين ترتيب سلسله مراتبي از گره هاي محاسباتي فيزيكي را براي برنامه خود تشكيل دهد. معماري مجازي از مولفه هاي زير تشكيل مي شود: گره هاي محاسباتي، خوشه ها كه مجموعه اي ازگره هاي محاسباتي هستند، سايت هاكه مجموعه اي از خوشه ها هستند و دامنه ها كه مجموعه اي از سايتها هستند. در هنگام تعريف يك معماري مجازي مي توان با استفاده از امكانات تعريف شرايط براي گره هاي محاسباتي، فقط از منابع محاسباتي مناسب يا دلخواه در شبكه، جهت ساخت سيستم توزيع شده استفاده كرد. (بعنوان مثال استفاده از كامپيوترهاي بيكار در شبكه) معماري هاي مجازي چندگانه نيز قابل تعريف هستند كه مي توانند مولفه هاي خود را به اشتراك بگذارند.
• دسترسي به پارامترهاي سيستم : JavaSymphony مجموعه اي از API هاي سطح بالا براي كنترل بسياري از پارامترهاي سيستم ارائه مي كند از جمله مي توان به پارامترهاي CPU Load (ميزان كار بارگزاري شده به CPU )، idle Times (درصد بيكاري)، ميزان حافظه در دسترس، تعداد پروسه ها و نخهاي موجود در سيستم, تاخير شبكه و پهناي شبكه اشاره كرد. اين پارامترها مي توانند از سيستم زمان اجراي JavaSymphony يا JRS درخواست شده و براي كنترل استقرار اشياء در مولفه هاي مختلف معماري توزيع شده, حركت اشياء بين مولفه ها و بارگذاري متعادل استفاده شوند.
• استقرار اشياء در مولفه هاي محاسباتي بصورت اتوماتيك وكنترل شونده از طرف كاربر: برنامه نويس مي تواند ايجاد و استقرار يك شي در يكي از مولفه هاي معماري مجازي را كنترل كند. استقرار يك شي در يك مولفه مي تواند با توجه به مكان اشيا ديگر كه با اين شي در ارتباط خواهندبود, صورت گيرد. بعنوان مثال ممكن است مجموعه اي از اشياء كه با يكديگر ارتباط زيادي دارند برروي مولفه هايي از معماري مجازي كه نزديك يكديگر هستند مستقر شوند. اگر برنامه نويس دقيقا” محل يك شي را جهت اجراء در آن مكان مشخص نكند JRS بصورت اتوماتيك در مورد محل قرارگيري شي در بين گره هاي محاسباتي فيزيكي تصميم گيري خواهد كرد.
• حركت اشياء بين مولفه هاي محاسباتي بصورت اتوماتيك و قابل كنترل از طرف كاربر:JavaSymphony از حركت اشياء بين گره هاي محاسباتي بصورت اتوماتيك و يا تحت كنترل كاربر پشتيباني مي كند.
• فراخواني سنكرون, آسنكرون و يك طرفه متدها: همانطوركه مي دانيم تمامي فراخواني روالهاي دور در جاوا بصورت سنكرون انجام مي گيرد. علاوه بر اين مكانيزم، JavaSymphony دو روش ديگر براي فراخواني متدهاي دور را در اختيار برنامه نويس قرار مي دهد: ۱- فراخواني آسنكرون كه در اين روش يك Handle كه براي بررسي آماده بودن نتيجه در آينده استفاده خواهد شد, بعنوان نتيجه فراخواني روال برگشت داده مي شود. ۲- فراخواني يك طرفه : كه دراين روش طرف فراخواني كننده متد، منتظر دريافت هيچ نتيجه اي از فراخواني متد نمانده، بلكه متد دو را فراخواني كرده و بدون اينكه بداند اجراي آن كي به اتمام خواهد رسيد كارهاي خود را دنبال مي كند.
• بارگذاري كلاسهاي دور بصورت دلخواه : به كمكJavaSymphony بجاي آنكه لازم باشد تمام فايلهاي حاوي كلاس هاي برنامه توزيع شده در تمامي گره هاي محاسباتي ذخيره شوند، اين فايل ها مي توانند در زمان نياز در يك گره به آن گره بارگزاري شده و استفاده شوند. اين خصوصيت مي تواند باعث كاهش كل حافظه مورد نياز برنامه توزيع شده شود.
بعلاوه JavaSymphony از اشياء مانا نيز پشتيباني مي كند. يعني به برنامه نويس اجازه ميدهد اشياء برنامه را در حافظه هاي جانبي ذخيره كرده و بازيابي كند. اين ابزار نيازي به هيچ گونه تغييردر زبان جاوا يا JVM يا كامپايلر جاوا نداشته و بصورت كتابخانه اي از Class ها پياده سازي شده و قابل استفاده است. JavaSymphony براساس سيستم هاي مبتني برAgent ساخته شده و فعلا در حال ارزيابي است.

۲٫ ۲٫ معماري مجازي توزيع شده گي پويا (Dynamic Virtual Distributed Architectures)
JavaSymphony از مكان يابي, بارگذاري متعادل و حركت اشياء بين گره هاي محاسباتي به صورت اتوماتيك پشتيباني مي كند (بدون اينكه برنامه نويس دخالتي داشته باشد) اما تجربه نشان داده كه سيستمهاي تمام اتوماتيك فعلي معمولا نمي توانند اطلاعات كافي (به اندازه برنامه نويس) در مورد ساختار سيستم توزيع شده, بدست آورندو در نتيجه كارايي ضعيفي را به دنبال دارند.
از اين رو درJavaSymphony يك حالت نيمه اتوماتيك براي پياده سازي و پيكربندي سيستم توزيع شده ارائه شده است. به اين صورت كه بسياري از كارهاي جزيي و خسته كننده و مسائل سطح پايين براي پياده سازي سيستمهاي توزيع شده (مانند ايجاد و استفاده از پروكسي ها ، برنامه نويسي سوكتها و…) توسط JavaSymphony انجام مي شود اما تصميم گيري هاي مهم و استراتژيك در مورد ساختار سيستم توزيع توسط برنامه نويس صورت مي گيرد. برنامه نويس جهت تعريف ساختار سيستم توزيع شده كارهاي زير را انجام مي دهد:
• تعريف يك معماري مجازي توزيع شده با مشخص كردن گره هاي محاسباتي، خوشه ها، سايتها ودامنه ها: اين معماري براي اجراي برنامه كاربردي بصورت توزيع شده برروي شبكه استفاده خواهد شد. برنامه نويس ميتواند برخي شرايط سيستمي براي گره هاي محاسباتي تعريف كند تا تنها كامپيوترهايي در شبكه كه حائز آن شرايط هستند (چه نرم افزاي و چه سخت افزاري) بعنوان منابع محاسباتي فيزيكي براي معماري تعريف شده, استفاده شوند.
• استقرار داده ها و اشياء با توجه به ارتباط آنها با داده هاي ديگربر روي گره ها : بعنوان مثال اشيايي كه ارتباط زيادي با هم دارند ممكن است برروي گره هاي محاسباتي نزديك به هم و يا حتي برروي يك گره بارگذاري شوند.
• استقرار اشياء يا داده ها برروي گره هاي محاسباتي با توجه به شرايط سيستمي آنها : بعنوان مثال استقرار اشيا در گره هايي با كمترين ميزان كاري يا بالاترين حافظه در دسترس.
• بارگذاري كدهاي مورد نياز (كد كلاسها) در گره هاي محاسباتي هنگام نياز به آنها: با استفاده از اين ويژگي نيازي به ذخيره سازي كد تمام كلاسهاي برنامه توزيع شده در تمام گره هاي محاسباتي نبوده و ميتوان كد هر كلاس را هنگام نياز به آن در يك گره خاص به آن بارگذاري كرد.
JavaSymphony مفهومي بنام Dynamic Virtual distributed architectures (كه از اين به بعد معماري مجازي مي ناميم) ارائه مي كند, كه به برنامه نويس امكان تعريف ساختار شبكه اي از منابع محاسباتي را مي دهد. پس از تعريف اين ساختار مي توان اشياء مختلف موجود در برنامه را در مولفه هاي تشكيل دهنده اين معماري مستقر كند يا اشياء موجود درگره هاي محاسباتي را به گره هاي ديگر حركت دهد. همچنين مي تواند بين تعداد اشياء بارگذاري شده در گره هاي مختلف موازنه ايجاد كند ونيز كدهاي لازم را هنگام نياز به آنها درهر يك ازگره ها بارگذاري كند. هر معماري مجازي در حقيقت دامنه اي است كه به سايتها، خوشه ها وگره هايي تقسيم شده است. (شكل ۱) در پايين ترين سطح گره هايا گره هاي محاسباتي قرار دارند كه در حقيقت معادل يك منبع محاسباتي فيزيكي مانند PC يا WorkStation ميباشند. گره هاي مختلف مي توانند با يكديگر تركيب شده و تشكيل يك خوشه را دهند كه در حقيقت معادل يك شبكه محلي از چند PC يا WorkStation است سطح بعدي را سايت ها تشكيل مي دهند كه مجموعه اي از خوشه هاي متصل به هم مثلا به وسيله يك WAN يا LAN ميباشند. در بالاترين سطح سايتها مي تواننند با يكديگر تركيب شده و تشكيل يك دامنه (domain) را دهند كه در حقيقت يك شبكه محاسباتي بزرگ و توزيع شده است. توجه داشته با شيد كه هرگره متعلق به يك سه تايي يكتاي (خوشه- سايت – دامنه) مي باشد بطور مشابه هر خوشه يه يك دو تايي يكتاي (سايت -دامنه) وهرسايت به يك دامنه خاص تعلق دارد.

شکل ۱ . معماري مجازي
معماري مجازي مي تواند به صورت پويا ايجاد شده يا تغيير داده شود هرمؤلفه ازيك معماري مجازي( گره ، سايت ، خوشه ، دامنه) توسط مديري كه قابل رويت براي برنامه نويس نبوده و به عنوان بخشي ازJRS پياده سازي شده، كنترل مي شود.

۲٫ ۳٫ مدل برنامه نويسي Java Symphony
در حالت كلي هربرنامه كاربردي كه از JavaSymphony استفاده مي كند بايد ابتدا خود رادر سيستم زمان اجراي JavaSymphony يا(JRS) ثبت يا Register كند. پس از آن مي تواند معماري مجازي خود را تعريف كند. اشياء مي توانند هم در گره هاي محاسباتي محلي و هم درگره هاي ديگر به صورت دور ايجاد شده وبين گره هاي شبكه حركت كنند. براي ارتباط بين اشياء موجود در سيستم توزيع شده نيز JavaSymphony از سه مدل فراخواني متدهاي دورپشتيباني مي كند ( سنكرون، آسنكرون و يك طرفه). در نهايت برنامه كاربردي قبل از اتمام, خود را از وضعيت ثبت شده در JRS خارج مي كند((unregister اين كار باعث آزاد شدن منابع JRS و حافظه تخصيص يافته به برنامه خواهد شد.

بخشی از مقاله انگلیسی:

I. Documentation for the API programmer 1.) The Network Agent How to find a virtual architecture in a physical architecture? Look at the following physical architecture like created in the Shell: To create an easier to understand tree you have to remember that a node with level 3 can have children with level 2 and with level 3. So a node with level 3 is also a node with level 2 and a node with level 1. The following picture will show the example above: This representation of the tree is better to understand which virtual architectures can be found in the physically. A virtual architecture is a tree structure with working nodes only at the leafs. Look at the following example of a virtual architecture: This virtual architecture can be found in the physical architecture above, but there are more different solutions and without knowing the constraints of the nodes in the physical architecture the following solutions are possible:  V1 = N1; V2 = N2; V3 = N3  V1 = N4; V2 = N5; V3 = N2  V1 = N5; V2 = N1; V3 = N4  … there are many solutions but the following solutions are not possible:  V1 = N2; V2 = N3; V3 = N5  … The order of the nodes of the physical architecture is not important to find a virtual architecture. Only the structure to be found is important to exist in the physical architecture. The level of the root elements of the two architectures have not to be the same. The level of the physical architecture has to be higher or equal to the level of the virtual architecture. Remember the following virtual architecture can be found in the physical architecture above to: Solutions are:  V1 = N2; V2 = N3; V3 = N5  V1 = N3; V2 = N5; V3 = N2  … ۲٫) The JavaSymphony Shell JavaSymphony Shell is part of the JavaSymphony system. JS Shell is a graphical user interface designed to support the creation of a physical architecture consisting of connected JS Network Agents. This physical architecture is used by JS Applications to create virtual architectures and run distributed programs on them. If a JS application demands a virtual architecture, it will be mapped to a physical architecture that fulfils the needs of the application (see documentation for network agents for information how this is done). A physical architecture consists of nodes (Network Agents, NA’s). Nodes can be grouped under a cluster; clusters can be grouped under a site and so on (where clusters and sites are normal nodes that additionally have a cluster manager or a site manager. For being expansible, we decided to use level numbers instead of names for the hierarchy, so a node has level one, a cluster level two, a site level three and so on. The maximum level is nine. The following diagram shows a node of level three (a site) with three nodes of level two (clusters), that also have some nodes of level one under them. Remember that there are still eight network agents in this system (every higher level node has still the functionality of a normal node). Starting the JS Shell You can start the JS Shell by executing the batch file run_shell.bat in the programs main directory. This will start up the GUI and enable you to create a physical architecture. If you have already created a physical architecture and stored it in a file (see “Save Configuration”), you can use the JS Shell program to generate this stored architecture without starting the GUI by appending filename as a program argument: run_shell [filename] This will generate the architecture stored in the file, showing all information and errors as console output. The program will stop after generation. The Main Window The main window is divided into two parts. On the right side there is a list of available NA’s that can be added to a physical architecture on the left side. A NA is defined by the computer name (or IP) on witch the NA is running and the port on which the NA is listening ([computer_name]:[port]). At start-up, the default list stored in a file (serverlist.ini) will be loaded and displayed in the list window as well as the configuration stored in the file config.txt will be displayed as a tree in the left part. Of course you can load and store other lists and configuration files (see “Load Configuration”, “Load NA-List”). The List The list displays all NA’s that are currently available (marked with a green tick) as well as some other computers, where no NA is currently running on the specified port (marked with a red cross). NA’s, that are not marked could not be reached yet, they will be marked in a few seconds. You can add NA’s to the list, remove NA’s from the list and load and store lists of NA’s (see “Load NA-List). You can add an NA to the physical architecture on the left side by dragging and dropping it on the desired position in the architecture tree. The Tree The Tree window allows you to design a physical architecture consisting of NA’s. You can drag and drop NA’s in the tree around as well as remove them from the tree by dragging them to the list window. You can also load and store configurations to a file. If the design of your physical architecture is finished, you can create the physical architecture my selecting “Make Configuration” from the menu. Each NA in the tree will be contacted and the physical architecture will be created. The tree in the picture above displays two independent virtual architectures, one with root NA “agnes.par.univie.ac.at” and one with “daphne.par.univie.ac.at”. The node named “Systemroots” is just a dummy tree node and not a real NA. The first one is a NA of level three (agnes) consisting of two NA’s of level two (amanda, claire). The first one (amanda) consists of two NA’s of level one (becky, brooke), the second consists of three NA’s (darlene, dolly, edwin). The root of the second system is a NA of level five (daphne) consisting of one NA of level four (cybill) and another one of level 2 (lisa), and so on.

  

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *