« November 2007 | ص?حه اصلی | January 2008 »

ساخت firstcup Enterprise Application

December 31, 2007 02:17 PM

بحث را با ساخت firstcup Enterprise Application پي مي گيريم. اين Enterprise Application همانگونه كه در تصوير نيز مشخص است شامل يك Web Application و يك EJB است.

ساخت پروژه
1. از منوي �?ايل New Project را انتخاب كنيد.
2. از Category ها گزينه Enterprise را انتخاب كنيد.
3. از پروژه ها Enterprise Application را انتخاب نماييد.
4. Next را كليك كنيد.
5. نام پروژه را firstcup قرار دهيد.
6. Location پروژه را مسير �?ولدر myexample كه قبلا ساخته ايد قرار دهيد.
7. بقيه تنظيمات موجود را تغيير ندهيد و روي Finish كليك كنيد.

تنظيم Context Root
اين مرحله براي �?راهم نمودن امكان شناسايي WebApp در J2EE server است.
1. از قسمت پروژه ها firstcup را بازكنيد
2. روي گزينه application.xml از Configuration Files دبل كليك نماييد.
3. در اين �?ايل عنصر context-root را بيابيد.
4. مقدار موجود را از firstcup_war به firstcup تغيير دهيد و �?ايل را ذخيره كنيد.
5. در قسمت قسمت پروژه ها، روي firstcup-war كليك راست كنيد و properties را انتخاب نماييد.
6. از category ها، Run را انتخاب كنيد.
7. مسير Context را به firstcup/ تغيير دهيد و OK را كليك كنيد.

ساخت Enterprise Bean

اين Enterprise Bean يك Stateless session bean است. منظور اين است كه نيازي به تعامل با client و نگهداري state جاري ندارد. به عبارت ديگر درخواست هاي ارسالي به اين Bean هيچ وابستگي به حالت قبلي و بعدي client ندارد.
اين Enterprise Bean شامل دو كلاس است : يكي DukesBirthdayBean و ديگري DukesBirthdayRemote .

ساخت كلاس DukesBirthdayBean
1. از قسمت پروژه ها firstcup-ejb را انتخاب كنيد.
2. از منوي �?ايل گزينه New File را انتخاب نماييد.
3. از category ها Enterprise را انتخاب نماييد.
4. از قسمت File Types گزينه Session Bean را انتخاب نماييد.
5. Next را کليک کنيد.
6. نام EJB را DukesBirthdayBean قرار دهيد.
7. نام Package را com.sun.firstcup.ejb وارد نماييد.
8. Session Type را مساوي stateless قرار دهيد.
9. تيک �?يلد Local را برداريد و Remote را تيک بزنيد.
10. Finish را کليک کنيد.

اصلاح کدهاي DukesBirthdayBean.java
اين کلاس حاوي کدهايي است که ت�?اوت سال سن Duke و کاربر را محاسبه مي نمايد.
1. ابتدا Constructor پيش �?رض را که NetBeans ايجاد کرده، حذ�? کنيد.
2. در درون بدنه کلاس، کدهاي زير را کپي نماييد.

private static Logger logger = Logger.getLogger("com.sun.firstcup.ejb.DukesBirthdayBean");
    
public int getAgeDifference(Date date){
    int ageDifference;
        
    Calendar theirBirthday = new GregorianCalendar();
    Calendar dukesBirthdaye = new GregorianCalendar(1995,Calendar.MAY,23);
        
    // Set the Calendar object to the passed in Date
    theirBirthday.setTime(date);
        
    // Subtract the user's age from Duke's age
    ageDifference = dukesBirthdaye.get(Calendar.YEAR) - theirBirthday.get(Calendar.YEAR);
    logger.info("Raw ageDifference is: "+ageDifference);
    // Check to see if Duke's birthday occurs before the user's. If so, 
    // subtract one from the age difference
    if (dukesBirthdaye.before(theirBirthday) && (ageDifference > 0)){
        ageDifference--;
    }
    logger.info("Final ageDifference is: "+ageDifference);
       
    return ageDifference;
}

3. روي اديتور کليک راست کنيد و Fix Imports را انتخاب نماييد.
4. java.util.date را براي کلاس date و java.util.logging.logger را براي کلاسlogger انتخاب نماييد و OK را کليک کنيد.
5. روي بدنه متد getAgeDifference کليک راست کنيد و از منوي EJB Methods گزينه Add to Remote Interface را انتخاب کنيد.
6. �?ايل را ذخيره کنيد.

اصلاح کد DukesBirthdayRemote.java
اين كلاس بعنوان رابط كلاس DukesBirthdayBean عمل مي كند و اجزاي Web Tier براي دسترسي به DukesBirthdayBean از DukesBirthdayRemote است�?اده خواهند كرد.
اين كلاس توسط NetBeans ايجاد مي شود. شما �?قط بايد تغييرات لازم را در آن اعمال كنيد. بدين ترتيب:
1. ماژول firstcup-ejb را از قسمت پروژه ها باز کنيد.
2. روي DukesBirthdayRemote.java در پکيچ com.sun.firstcup.ejb دبل کليک کنيد.
3. پس از باز شدن �?ايل ، روي اديتور کليک راست کرده و گزينه Fix Imports را انتخاب کنيد.
4. براي کلاس Date گزينه java.util.Date را انتخاب کنيد.
5. در صورتي که دستور throws در تعري�? متد وجود داشت، آن را حذ�? نماييد.
6. �?ايل را ذخيره کنيد.

با ساخت EJB پياده سازي Business Tier از معماري پايان يا�?ت.
در ادامه به پياده سازي ماژول هاي Web Tier خواهيم پرداخت.

mahyar_ev | 02:17 PM | Comment(s)(0)

ساخت وب سرويس DukesAge

December 30, 2007 03:23 PM

پياده سازي Application معر�?ي شده در مطلب قبل را آغاز مي كنيم.

ايجاد يک �?ولدر براي پروژه
ابتدا براي قرار دادن كليه �?ايل هاي مربوط به پروژه يك �?ولدر خاص ايجاد مي نماييم. نام اين �?ولدر را myexample بگذاريد.

ايجاد وب سرويس

خروجي اين وب سرويس، برگرداندن سال سن Duke ، است. اين وب سرويس هيچ پارامتر ورودي ندارد.
در اين مرحله يك پروژه براي اين وب سرويس ايجاد مي كنيم. سپس يك كلاس جاوا ساده مي سازيم و تغييرات لازم را براي تبديل آن به يك وب سرويس اعمال مي كنيم و كدهاي لازم را مي نويسيم.
مراحل گام به گام ساخت آن بدين شرح است:

تعري�? پروژه
1. در NetBeans از منوي File منوي New Project را انتخاب نماييد.
2. در category هاي موجود web را انتخاب کنيد.
3. از انواع پروژه ها Web Application را انتخاب نماييد.
4. Next را کليک کنيد.
5. نام پروژه را firstcup-dukes-age قرار دهيد.
6. Location پروژه را همان �?ولدر myexample که ساخته ايد قرار دهيد.
7. App Server را Java System Application Server انتخاب کنيد.
8. Java EE version را Java EE 5 قرار دهيد.
9. Finish را کليک کنيد. اکنون بايد پروژه شما ساخته شده باشد و در پنل Projects در سمت چپ NetBeans قابل رويت باشد.
10. در قسمت web pages از منوي درختي پروژه �?ايل index.jsp را بيابيد. روي آن کليک راست کنيد و سپس با است�?اده از گزينه delete آن را حذ�? کنيد.


ساخت کلاس DukesAge
1. پروژه firstcup-dukes-age را در NetBeans انتخاب کنيد.
2. از منوي File گزينه New File را انتخاب کنيد.
3. از category ها Java Classes را انتخاب کنيد.
4. از انواع �?ايل نيز Java Class را انتخاب کنيد.
5. Next را کليک کنيد.
6. نام کلاس را DukesAge قرار دهيد.
7. در قسمت Package عبارت com.sun.firstcup.webservice را تايپ کنيد.
8. Finish را کليک کنيد. با اين کار �?ايل DukesAge.java در همان Package مشخص شده ايجاد مي شود و براي ويرايش، در ص�?حه باز مي شود.

تعري�? کلاس DukesAge بعنوان يک وب سرويس
براي اين کار عبارت WebService@ را درست قبل از جايي که کلاس، تعري�? شده قرار دهيد. بدين صورت:

@WebService
public class DukesAge {

}

حذ�? Constructor پيش ساخته
از آنجا که وب سرويس نياز به constructor ندارد. آن را از کلاس DukesAge حذ�? کنيد.

ا�?زودن متد getDukesAge
متدي به نام getDukesAge با خروجي int در داخل کلاس، ايجاد کنيد و قبل از آن نيز عبارت WebMethod@ را قرار دهيد. بدين صورت:

@WebMethod
public int getDukesAge() {
}

سپس دستورات زير را در بدنه متد کپي کنيد.

Calendar dukesBirthday = new GregorianCalendar(1995,Calendar.MAY,23);
Calendar now = Calendar.getInstance();
int dukesAge = now.get(Calendar.YEAR) - dukesBirthday.get(Calendar.YEAR);
dukesBirthday.add(Calendar.YEAR,dukesAge);

if (now.before(dukesBirthday)){
    dukesAge--;
}
return dukesAge;

ر�?ع مشكل Import
1. روي اديتور كليك راست نماييد .
2. گزينه Fix Imports را انتخاب نماييد.
3. پكيج javax.jws.WebService را براي کلاس WebService انتخاب نماييد.

Build و Deploy نمودن وب سرويس
از پنل پروژه ها firstcup-dukes-age را انتخاب نموده و کليک راست کنيد. سپس گزينه Build Project را انتخاب نماييد. با اين کار پروژه در firstcup-dukes-age.war پکيج مي شود.
پس از پايان build مجددا كليك راست نماييد و اين بار گزينه Deploy Project را انتخاب كنيد.

mahyar_ev | 03:23 PM | Comment(s)(0)

اولين ?نجان

December 26, 2007 01:07 PM

همانگونه كه در مطالب قبلي نوشتم، قصد دارم كه يك Web Application را شروع كنم و روي جزئيات طراحي و پياده سازي اش متمركز شوم. بعنوان اولين پروژه، بهتر آن ديدم كه firstcup خود جاوا را براي اين كار انتخاب كنم كه خود sun آن را بعنوان اولين گام در نظر گر?ته. در مطالب آتي طراحي و پياده سازي كليه ماژول ها را آنطور كه در مستندات firstcup ارائه شده در اينجا خواهم آورد. درخاتمه بحث هم به اميد خدا كل مطالب را يك جا بصورت يك ?ايل براي دانلود در اين وبلاگ خواهم گذاشت. پس علاقمندان جاوا با من همراه شويد. ضرر نمي كنيد.

نرم ا?زارهای مورد نیاز
براي پياده سازي و اجراي اين Application به نرم ا?زارهاي زير نياز خواهيد داشت.
• Java EE 5 SDK
• NetBeans IDE 5.5
دوستان خارج از ايران مي توانند آنها را از سايت sun دانلود نمايند. اما در مورد دوستان داخل ايران لينك هاي دانلود اين نرم ا?زارها را مي توانيد اينجا بيابيد البته متاس?انه لينك ارائه شده در اين آدرس هم توسط بعضي ISP ها ?يلتر شده. درصورت ?يلتر بودن ISP هاي ديگر را امتحان كنيد.
نكته: است?اده از هر IDE دیگری نیز که با Java EE 5 سازگار باشد امکان پذیر است. اما شرح مراحل کاری که در اینجا ارائه شده با توجه به امكانات NetBeans 5.5 است.

شرح كاركرد Application
نحوه كاركرد Application بدين صورت است كه وقتي شما آن را توسط Browser اجرا مي كنيد، در ص?حه اي تاريخ ميلادي تولد شما دريا?ت مي شود. سپس Application تاريخ تولد شما را با تاريخ تولد Duke كه يك تاريخ مشخص ( 23 ماه مي 1995 ، تاريخي كه اولين نسخه دمو زبان جاوا عرضه عمومي شد) است مقايسه مي نمايد. درنهايت Application وضعيت سن شما را نسبت به Duke به عنوان پاسخ برمي گرداند. اينكه آيا شما بزرگتر، كوچكتر يا هم سن Duke هستيد.

معماری
این App شامل سه کامپوننت اصلی است:
• DukesAgeService : یک Web Service است و با JAX-WS پیاده می شود و سن Duke را محاسبه می نماید.
• DukesBirthdayBean : یک Enterprise bean است که ت?اوت سن وارد شده توسط کاربر را از سن Duke محاسبه می کند.
• firstcup : یک WebApp که با JSF ساخته می شود. firstcup از DukeAgeService برای نمایش سن Duke است?اده می کند. همچنین تاریخ وارد شده توسط کاربر را می خواند. با است?اده از DukesBirthdayBean تعیین می کند که سن کدام بیشتر است. سپس ت?اضل دو سن را برای کاربر نمایش می دهد.

این WebApp شامل ?ایل های زیر است:
• ?ایل greeting.jsp یک ص?حه jsp است که کاربر می توان درآن تاریخ تولد خود را وارد کند.
• ?ایل response.jsp یک ص?حه jsp است که پاسخ را به کاربر نشان مي دهد و اعلام مي كند که آیا سن او از Duke بیشتر است یا کمتر يا هم سن هستند.
• ?ایل DukesBDay.java که یک managed Bean است و مشخصه ها را تعری? می کند، سن جاری Duke را از Web Service می گیرد. همچنین ت?اضل دو سن را از enterprise Bean دریا?ت میکند.
• ?ایل faces-config.xml برای configure نمودن بخش های مرتبط با JSF به کار می رود.
• ?ایل web.xml که Deployment Descriptor برنامه است و تنظیمات App برای نصب در آن ثبت می گردد.

Tier ها در این مثال
این مثال دارای
یک کامپوننت Web Tierيعني firstcup
دو کامپوننت Business Tier يعني DukeAgeService و DukesBirthdayBean
است.
Browser کاربر client Tier است. ضمنا این مثال EIS Tier ندارد.

Tier هاي اين Application را به همراه كليه ?ايل ها و كلاس هاي اصلي Application در شكل زير ملاحظه مي كنيد.

firstcupArchitecture_small.JPG
تصوير بزرگتر

در مطلب بعد پروژه را با پياده سازي وب سرويس DukesAge ادامه خواهم داد.

mahyar_ev | 01:07 PM | Comment(s)(0)

مشخصات Tier ها

December 16, 2007 03:36 PM

Tired Applications:
WebApp معمولا شامل Client Tier و Middle Tier و Data Tier است. توجه JavaEE بر لايه مياني است.
از نظر منطقي نيز مي توان لايه هاي App را بدين صورت درنظر گر�?ت:

Client Tier: عبارت است از کاربري که به WebApp دسترسي مي يابد. تعري�? مشخصات اين بخش از دسترس برنامه ساز خارج است.

Web Tier: عبارت است از کامپوننت هايي که ارتباط بين client را با Business tier برقرار مي کنند. وظاي�? اصلي آن عبارت است از:
• ايجاد محتواي ديناميک به �?رمت هاي گوناگون (براي client هاي گوناگون)
• دريا�?ت اطلاعات وارد شده توسط کاربر و برگرداندن نتايج توليد شده توسط Business Tier
• کنترل گشت و گذار client در ص�?حات
• مديريت وضعيت داده هاي session کاربر
• انجام برخي کارهاي پايه اي و نگهداري موقت برخي داده ها در JavaBean ها
تکنولوژي هايي که در لايه Web tier است�?اده مي شوند عبارتند از
• Servlet
• JSP
• JSF يا JavaServer Faces
• JavaServer Pages Standard Tag Library
• JavaBeans Component

Business Tier: اين لايه شامل کامپوننت هايي است که Business logic را پياده مي کنند. منظور از Business logic کدهايي است که امکان است�?اده از توابع و کارهاي خاص حوزه کاري مربوطه را �?راهم مي کنند. در يک App که از طراحي خوبي برخوردار است، بايد توابع و کارکردهاي اصلي در اين لايه پياده شوند.
تکنولوژي هايي که در اين لايه است�?اده مي شوند:
• Enterprise JavaBeans components
• JAX-WS web service endpoints
• Java Persistence API entities

Enterprise Information Systems Tier يا EIS:
اين لايه شامل database server ها، سيستم هاي resource planning و کليه منابع داده اي است. معمولا اين منابع روي کامپيوترهايي غير از سرور JavaEE نصب هستند. اتصال به آنها توسط کامپوننت هاي Business tier انجام مي شود.
در اين لايه از تکنولوژي هاي زير است�?اده مي شود:
• JDBC يا Java Database Connectivity API
• Java Persistence API
• J2EE Connector Architecture
• Java Transaction API يا JTA

منبع: FirstCup

mahyar_ev | 03:36 PM | Comment(s)(2)

JavaEE Web Application

صحبت را با نگاهي به م?هوم Web Application در JavaEE ادامه مي دهم.
Web Application چيست؟
يکي از تعاري? Web Application مي گويد که Web Application نرم ا?زاري است که تحت وب مورد دستيابي قرار مي گيرد. يکي از دلايل عموميت يا?تن Web Application ها اين است که از همه جا قابل دسترسي است و دسترسي به آن نياز به نصب نرم ا?زارخاصي روي client ندارد.

اما Sun، يک Web Application را بعنوان يک Web Server يا Application Server پيشر?ته تعري? مي کند و به دو گونه، تقسيم مي کند.:
• Presentation-oriented: اين نوع WebApp ص?حات وبي ايجاد مي کند که امکان تعامل با کاربر را ?راهم مي سازند. اين ص?حات مي تواند انواع markup language ها همچون HTML و XML را دربر مي گيرد. همچنين محتواي آنها بصورت ديناميک، با توجه به درخواست کاربر توليد مي شوند.
• Service-oriented: اين نوع WebApp امکان است?اده از Web Service را ?راهم مي کنند. اغلب Presentation-oriented App ها بعنوان client براي Service-oriented App ها هستند.

در Java 2 platform توليد محتواي ديناميک با ص?حات jsp يا Servlet ها انجام مي شود که به Web Component معرو?ند.
Servlet ها کلاس هاي ايجاد شده به زبان جاوا هستند که بصورت ديناميک درخواست ها را پردازش و پاسخ ها را توليد مي کنند. ص?حات jsp ?ايل هاي متني هستند که بعنوان servlet عمل مي کنند اما ر?تار آنها در توليد محتواي ديناميک قابل درک تر است. اگرچه jsp و servlet به جاي يکديگر قابل است?اده هستند ، اما هر کدام نقطه قوت و ضع? خاص خود را دارند. Servlet ها بيشتر براي ايجاد Service-oriented App ها ، همچنين توابع کنترلي Presentation-oriented App مناسب هستند. اما jsp ها بيشتر براي توليد متن هاي markup مثل HTML، WML، XML و SVG (Scalable Vector Graphics) مناسب هستند.
پس از معر?ي Servlet و jsp، تکنولوژي ها و framework هاي جديدي براي توليد WebApp ها ايجاد شد. از جمله JSF. با اين حال Servlet زيربناي همه تکنولوژي هاي مذکور است.
هريک از تکنولوژي هاي بعد از Servlet لايه اي بر abstraction ا?زودند و باعث ا?زايش سرعت و ارتقاء کي?يت توليد WebApp ها شدند.
Web Component ها روي پلت?رمي به نام Web Container اجرا مي شوند. Web Container انواع سرويس ها و امکانات لازم براي است?اده Web Component ها، همچنين امکان دسترسي به ساير API ها را ?راهم مي سازد.
ر?تار WebApp هنگامي که روي Web Containerنصب (deploy) مي شود قابل تنظيم (configuration) است. اين تنظيمات در ?ايل هايي به ?رمت XML به نام Deployment descriptor يا DD درج مي شوند.

مراحل توليد يک WebApp :
1. ايجاد کدهاي برنامه
2. ايجاد DD برنامه
3. کامپايل برنامه با همه کلاس هاي کمکي است?اده شده توسط Web Componnet ها
4. ?رايند اختياري Package کردن App به يک Deployment unit
5. Deploy کردن App روي Web Container
6. انتساب WebApp به يک URL

منبع: Java EE Tutorial

mahyar_ev | 03:30 PM | Comment(s)(0)

جاوا آسان نمود اول، ولي افتاد مشكل ها !

December 15, 2007 01:43 PM

مطالبي كه تا به حال در اين وبلاگ نوشته ام، تقريبا همه اش چيزهايي بوده كه در همان زمان نوشتن تجربه اش كردم و درگيرش بوده ام. در واقع بهتر است بگويم در همان زمان،خودم هم آنها را ياد گر�?ته ام. در واقع اين وبلاگ نمايانگر سير آموخته هاي من در مورد جاوا است. اينكه در هر زمان روي چه بخشي از جاوا دست گذاشته ام و بعدش سراغ چه ر�?ته ام. قبلا هم گ�?ته ام كه از نوشتن در اين وبلاگ دو هد�? را دنبال كرده ام. اول اينكه برايم انگيزه اي شود براي بيشتر مطالعه كردن. دوم اينكه جوابي به سوالات خودم در مورد جاوا بدهم. سوالاتي كه ممكن است سوال ديگران هم باشد.
اصولا جاوا زبان خاصي است و با ساير زبان هاي برنامه نويسي ت�?اوت دارد. جاوا حد و مرز ندارد. شايد اين، بخاطر open source بودن آن باشد كه امكان چنين رشد و گسترش عجيب و غريبي را به آن داده است. جاوا نه �?قط يك سينتكس كه مجموعه از استانداردها، pattern ها، كتابخانه و Framework هايي است كه روز به روز نيز در حال گسترش اند. هر از گاهي Framework هاي قبلي، جاي خود را به نسخه هاي پيشر�?ته تر و جديد تر مي دهند. موارد كاربرد جاوا نيز �?راوان است و تقريبا همه بخش هاي نرم ا�?زاري را دربر مي گيرد. از نرم ا�?زار هاي دسكتاپ گر�?ته تا تحت وب و موبايل و غيره.
تا به حال در اين وبلاگ در هر برهه، موضوعي را بعنوان محور بحث، انتخاب كرده ام و تا حدي كه در توانم بوده به آن پرداخته ام و سعي كرده ام كه به نتيجه اي برسانمش. مثلا jsp يا XML يا jsf. اما هنوز شايد خواننده نوشته هاي من با ذات و جوهره جاوا آشنا نشده باشد (چون خودم هم هنوز آشنا نيستم). در واقع آنچه تا به حال ارائه كرده ام، معر�?ي تكنولوژي ها و framework هاي مطرح و آشنا در جاوا بوده.
شايد الان وقتش باشد كه كمي تغيير رويه دهم و از معر�?ي framework صر�? �?اصله بگيرم و نگاهي كاربردي تر، عملي تر و عميق تر به جاوا بيندازم و در اين رهگذار به اصول طراحي و ساير مباحثي كه تا به حال �?رصتش پيش نيامده، بپردازم. از اين رو تصميم دارم از انواع application هاي جاوا نمونه هايي را انتخاب كنم و آرام آرام پيش ببرم و اين اصول را در آنها پياده كنم.
مي دانم كاري كه مي خواهم انجام دهم كار سختي است (حداقل براي من). چون دانش و تجربه لازم را ندارم. مخصوصا اينكه غير از پروژه هايي كه خودم تعري�? كرده ام، هيچ پروژه واقعي، در اين زمينه انجام نداده ام. اين نكته هم مي تواند عيب تلقي شود و هم حسن. عيبش كه معلوم است. تجربه چيزي است كه آدم با خواندن هزار كتاب هم به دست نمي آورد. مخصوصا در نرم ا�?زار، هميشه قواعد تئوري نوشته شده در كتابها جواب نمي دهد و بعضا بايد با توجه به مشكلات عملي پيش آمده حين كار، رويه خاصي برگزيد. اين قابليت و توانايي بدست نمي آيد مگر با تجربه و لمس عملي مشكلات. اما حسن اين كار چيست. حسنش اين است كه مبناي كار من اصول تئوري و آموزشي جاوا است و از اين نظر خودم و خواننده را با م�?اهيم نظري اين زبان بطور عملي آشنا مي سازد و در جاوا راهش مي اندازد.
براي شروع كار تصميم دارم يك Web Application نمونه اي را با جاوا شروع كنم و قدم به قدم پيش ببرم. روي لايه ها تمركز كنم. در هر لايه Framework هاي مورد است�?اده را نام ببرم و الگوهاي طراحي هر لايه را ذكر كنم و انواع روش هاي ممكن را معر�?ي كنم.
كار سختي است، براي من راه نابلد. به كمك و راهنمايي دوستان بسيار نياز خواهم داشت. چون قطعا نوشته هايم خالي از غلط نخواهند بود. از همه دوستاني كه جاوا كاركرده اند و با م�?اهيم آشنا هستند، خواهشمندم كه اشتباهاتم را تذكر دهند و نوشته هايم را تصحيح نمايند. همچنين راه حل هاي ديگر را در مورد مساله مورد بحث ارائه نمايند. احتمالا آرام آرام پيش خواهم ر�?ت و گاهي هم راهي را خواهم ر�?ت كه مجبور به برگشت از آن و انتخاب راهي ديگر خواهم شد. سردر گمي هايم را ببخشيد و مرا از راهنمايي هاتان بي نصيب نگذاريد.
اميدوارم با كمك يكديگر مطالب اين وبلاگ م�?يد تر و بهتر شود و بتوانيم جاي خالي يك منبع جامع عملي �?ارسي را در مورد application هاي جاوا، تا حدودي پر نماييم.
اگر خدا بخواهد. در مطلب بعدي يك Web Application را با جاوا شروع خواهم كرد.

mahyar_ev | 01:43 PM | Comment(s)(1)