PDA

View Full Version : معرفی و بیان بهترین Framework برای javaEE



mazdadoost
یک شنبه 15 اردیبهشت 1387, 22:23 عصر
سلام
امیدوارم دوستانی که در زمینه برنامه نویسی سیستم های سازمانی و Larg Scale
فعالیت داشتن تجربیاتشون رو در زمینه Framework های جاوا نگارش سازمانی بیان کنن.
مخصوصا اینکه بگن برای مثال مجموعه
1-Struts برای web mvc
2-Spring برای سرویس لیر(EJB-jpa-jta ....)
3-Hibrinate برای ....

هدف من از طرح ای تاپیک ارائه بهترین ترکیبات ممکن برای پروژه های مختلف هست.
مثلا برای پروژه های کوچک -متوسط و بزرگ چه فریم ورک هایی استفاده بشه. از دوستان تقاضا دارم حتی المکان از پروژههای عملیشون برای نظر دادن استفاده کنن.نه از سایر منابع.
:لبخندساده::قلب:

fkohantorabi
دوشنبه 16 اردیبهشت 1387, 18:23 عصر
سلام
امیدوارم دوستانی که در زمینه برنامه نویسی سیستم های سازمانی و Larg Scale
فعالیت داشتن تجربیاتشون رو در زمینه Framework های جاوا نگارش سازمانی بیان کنن.
مخصوصا اینکه بگن برای مثال مجموعه
1-Struts برای web mvc
2-Spring برای سرویس لیر(EJB-jpa-jta ....)
3-Hibrinate برای ....

هدف من از طرح ای تاپیک ارائه بهترین ترکیبات ممکن برای پروژه های مختلف هست.
مثلا برای پروژه های کوچک -متوسط و بزرگ چه فریم ورک هایی استفاده بشه. از دوستان تقاضا دارم حتی المکان از پروژههای عملیشون برای نظر دادن استفاده کنن.نه از سایر منابع.
:لبخندساده::قلب:

ترکیب Spring و Hibernate به همراه EJB به نظر میاد که ترکیب موفقی باشه. در مورد front end بستگی داره که پروژه چی باشه ولی من از سیستم html خوشم نمی یاد چون کلاینت حافظه نداره و این موجب می شه که برنامه سرور به شدت پیچیده بشه. به جای مدل HTML من الان خیلی طرفدار Flex هستم. Ajax هم می تواند در این زمینه کمک کند ولی به نظر من Ajax تا اینجا یه راه حل مقطعی هستش (با وجود اینکه الان خیلی همه گیر شده) و خیلی امکان داره تا چند وقط دیگه تبدیل به یک سری سرویس استاندارد بشه که browserها اریه میدهند.


فرزاد-

mazdadoost
دوشنبه 16 اردیبهشت 1387, 21:19 عصر
از پست خوبتون ممنون.
چنانچه برای شما و سایر دوستان عزیز مقدوره موارد زیر رو در پست هاتون در نظر بگیرید :
1-ترکیب پیشنهادی شما برای چه سایز پروژه ای هست :Small-Medium-Larg
2-اگر تجربه ای در زمینه استفاده از این ترکیب دارید , ضمن ذکر موارد مثبت و منفی پیش برد پروژه چه تجربیاتی در این زمینه ها برای سایر دوستانی که از این تکنولوژی ها استفاده بکنن مفید فایده خواهد بود.

با نظر جنابعالی در استفاده از Adobe Flex در لایه نماشی و Front Conteroler موافقم.مخصوصا که در ویرایش جدید از 2 به بعد دیگه برای اجرا به mxml نیاز کامل نداره(بلکه کامپایلر Flex فایل های فلشی تولید میکنه که نیازی به تکنولوژی سمت سرور ندارن!).اما خوب به هر حال برای استفاده از امکانات کاملش نیاز به ّتکنولوژیی های خاص ادوبی مثل Flex DataServices - LiveCycle Ent- Coldfusion-و Flash Remoting داره.که همگی بار آموزشی نسبتا قابل توجهی دارن.از طرفی بنده به شدت امید وارم نظر شما درباره بومی شدن Ajax در Browser ها به شکلی که برای مثال UI جدید که علاوه بر امکانات یک برنامه Desktop امکاناتی مثل Adobe Air رو هم برای Off Line کار کردن داشته با API استاندارد فراهم کنند.منتها قبل از اون W3 حتما باید استاندارد ها رو تدوین کنه چراکه در غیر این صورت هر براوزر واسه خودش یه API درست میکنه و این یعنی مکافات.از طرفی الان با وجود بودن Framework های خوب و آسون برای Ajax مثل IceFaces برای java و درون ساخت شدن Ajax در .net 3.5 هم پیچیدگی سطوح پایینی Ajax از دید برنامه نویس پنهان میشه هم این مطلب افاده می شه که : Ajax برای مدت کمی مهمون ما نیست.البته این نکته رو هم نباید از نظر دور داشت که الان Flex دیگه مثل ویرایش های اولیه یه ابزار JavaEEکامل نیست.
یک نکته دیگه : متاسفانه در ایران مدیران IT که سفارش های واقعی نرم افزاری رو میدن رویه چیزهایی تکیه میکنن که عمومی مرسوم و مخصوصا سر زبون باشن.البته نه همیشه.برای خودم پیش اومده که مشتری روی دات نت.و فقط به زبان #c تکیه داشته!! و اینکه حتما باید Ajax !یکی دوباری سعی کردم توجیهشون کنم که چرا زا تکنولوژی هایی مثل Flex,j2ee ,Coldfusion و یا .. استفاده نکنیم کلا فکر کردن که از پس پروزشون بر نمی آیم!کما اینکه به مرور شاهد شناخته شدن javaEE در ایران هستیم.الغرض دوستان سعی کنن تجربیتتشون رو طوری به سایرین منتقل کنن تا به عنوان یه استراتژی عملی برای شروع پروژه هاشون ازش استفاده کنن.

fkohantorabi
سه شنبه 17 اردیبهشت 1387, 00:29 صبح
اونایی که من گفتم بیشتر به درد پروژه های متوسط و بزرگ می خوره ولی راستش رو بخوای من الان خیلی تعریف درستی از اینکه سایز پروژه رو چی حساب می شود ندارم.

در مورد پروژه های کوچیک شاید استفاده از hibernate زیاد خوب نباشه و بشه از کتابخانه های ساده تر مثل dbutils استفاده کرد ولی همچنان spring می تواند مفید باشه چون اصولا اهمیت spring بیشتر توی abstractionهایی که کرده.

در مورد موارد خوب و بدش hibernate یکم غیر فعال هستش الان و اصولا تیمش مشغول کارای دیگست واسه همین اگه به مشکلی بر بخوری باید یا خوت حل کنی یا باید از یکی تو فرومش بخای واسط درستش کنه و در هر دو حالت یکم طول می کشه که راه حل مربوطه وارد توزیع های اصلی hibernate بشه (این باعث می شود نتوانی خیلی نسخه های جدید hibernate رو بگیری). Spring هم اصولا به عنوان کتابخانه ای که state توی حافظه داره تک و توک برات مشکلات class loading میاره که هر چقدر برنامت modular ترباشه بیشتر به این دسته از مشکلات می خوری. اینجور مشکلات مخصوصا وقتی آزار دهنده می شه که از یه کتابخانه که spring استفاده می کنه تو هم استفاده کنی و نتوانی packaging برنامت رو طوری بکنی که spring باهاش مشکلی نداشته باشه.

به غیر از این موارد و چیزای دیگهی که یادم نمیاد هر دوتا بسیار کتابخانه های سودمندی هستند و من به شخصه احترام زیادی واسه کاری که بخصوص در hibernate انجام شده دارم.


فرزاد-

mazdadoost
سه شنبه 17 اردیبهشت 1387, 08:11 صبح
برای روشن شدن مطلب :
ُSpring یک به اصطلاح Full Stack JavaEE Framework می باشد.ویژگی های زیادی داره که تمام ابن ویژگی ها حول مفهومی به عنوان کنترل معکوس میچرخند.یا IoC .
فریم ورک های IoC اغلب به علت لود کردن مقدار زیادی dependency چنانچه بدرستی و با دقت پیکربندی نشن به سرعت مشکلاتی ایجادمیکنن که حیات برنامه رو با خطر مواجه میکنه.
ما در کل یک پروژه با Spring انجام دادیم :
1-پروژه بر اساس متدلوژی توسعه و Scale نهایی سایز بندی میشه.ما از متد XP اسفاده میکنم.تیمی 6 نفره داریم.نیاز های برنامه حد متوسطی از زمان رو یعنی حدود 6 ماه رو صرف کرد .Scale برنامه برای سرویس دهی در اینترانت و حد اکثز 20 کابر همزمان بود.تعداد کل کاربر هادر نهایت به 116 نفر تا الان رسیده.بنابر متد XP این پروژه برای تیم ما متوسط ارزیابی میشه.
2-ما بعد از انالیز برنامه به این نتیجه رسیدم که به 82 شی در کل نیاز داریم.مقدار زیادی از این اشیا Entity بود و باید در Database ذخیره میشد.
3-الا رغم مخالفت مدیر پروژه مبنی بر استفاده از EJB3 ما تصمیم گرفتیم از Sprig استفاده کنیم.
4-ما قسمت عمده مستندات Spring رو مطالعه کرده بودیم.پس Bean هامون رو نوشیتیم و به spring تحویل دادیم.و تو این مرحله با Application Context برنامرو تست و پروفایل کردیم.متوجه شدیم که به کمبود Heap مواجه شدیم.heap رو بالا بردم اما باز هم مشکل ادامه داشت. همچنین ریسمان gc هم مدام برای آزاد کردن Heap تلاش میکرد.به شدت نا امید شدیم.
5-به مستندات Spring که مراجعه کردیم متجه شدیم که ما گرچه با مفاهیمی مثل Aoutowireing و LazyLaoding آشنایی داشتیم آما فکر نمیکردیم با این حجم اشیابه مشکلی بخوریم.config رو مجداد با دقت بیشتری انجامدادیم.و Heap رو برای JVM حدود 400MB قرار دادیم. همه چیز درست شد!ا
به عبارتی درک درست از یک فریم ورک میتونه خیلی مشکلات رو حل که.و البته تست و تست و تست!همین برنامه وقتی روی سرور Jrun دیپلوی شد گاهی Exeption : NullPointer , ClassNotFound میداد.باور بفرمایید ,حل مشکل واقعا سخت بود.چون Spring پشته Exeptin ها رو آبشاری میکنه .این عملا Debug رو برای ما سخت کرد.مخصوصا اینکه خطا ها اتفاقی بود !

در مورد تمام این Framework ها که به نظرم درست نیست کتابخانه خوانده شن(چون مجموعه از متد ها رو کپسوله نمیکنن! بله DBultis یک Lib جاواست از اپاچی برای کار با دیتابیس اما مواردی مثل EJB-Spring-Hibrinate-Webwork -,....روش های توسعه نوعی ساختار برنامه نویسی هستن که با مجموعه Lib هاشون پشتیبانی میشن.برای مثال در Spring شما میتونید و اغلب می خواهید که از فایل Xml برای پیکربندی Service هاتون اعم از Ejb-DAO-JMS-Transicaton ,..استفاده کنید.)

اکثر Framework های JavaEE به صورت اپن سورس و تجاری در دسترس هستند.برای دوستان ایرانی فرق چندانی در پشتیباتی هر دو شون نیست.!به نظر من Hibrinate به بلوغ رسیده!و شمت و سوی جامعه جاکارتا الان به سمت پیاده سازی JSR های جدید برای JPA , EJB3 سوق پیدا میکنه.مشکل چندانی در کار با Framework های مطرحی مثل Hibrinate در مقابل معادل تجاریش مثل Toplink اراکل پیش نمیاد.

ترکیب مد نظر شما Spring-Hibrinate و Ejb حقیقتا برای مدل های متوسط و بزرگ عالیه.اما به علت فاز آنالیز و حجم کا برای هماهنگی بین مدل برنامه برای مدل های کوچک مخصوصا تیم های زیر 3 نفر استفاده ازاستاندارد های خود javaEE مثل Ejb و JSF ترکیب خوبیه.هر چند به علت انعطاف پذیری اینها ترکیبات دیگری هم میشه ساخت!
با تشکر.

javaphantom
سه شنبه 17 اردیبهشت 1387, 11:01 صبح
EJB 3 Framework
JSF Frameword
JPA (Java Persistence

mazdadoost
سه شنبه 17 اردیبهشت 1387, 12:16 عصر
EJB 3 Framework
JSF Frameword
JPA (Java Persistence

دوست عزیز چنانچه براتون امکان داره از تجربیاتی که در این ترکیب بندی داشتین صحبت کنید. و بفرمایید چه مزایایی رو برای توسعه فراهم میکنه. به نظر شما برای چه تیم هایی با چه سایز پروژه ای بهترین انتخابه؟مزایا م معایب احتمالی رو هم بفرمایید؟
ممنون.

mazdadoost
جمعه 20 اردیبهشت 1387, 23:57 عصر
دوستان عزیز:
چنانچه براتون مقدوره کمک کنید این تاپیک به چند نتیجه مفید و منطقی در زمینه ای که عرض کردم برسه.
با تشکر.

fkohantorabi
شنبه 21 اردیبهشت 1387, 00:18 صبح
دوستان عزیز:
چنانچه براتون مقدوره کمک کنید این تاپیک به چند نتیجه مفید و منطقی در زمینه ای که عرض کردم برسه.
با تشکر.

سوالت رو یکم بازتر بکن. چه چیز بیشتری می خواهی بدانی؟ تقریبا تکنولوژیهایی که اینجا بحث شد در اکثر پروژه های agile استفاده می شود و معمولا بدون در نظر گرفتن سایز پروژه. اگر از من بپرسی که کلا جاوا به درد پروژه های کوچک بدرد نمی خورد. یک کاری هم که می توانی بکنی اینه که 3 تا پروژه (کوچک, متوسط, بزرگ) تعریف کنی و بشینیم بحث کنیم که هر کسی برای این پروژه های چه ترکیبی پیشنهاد می کند.


فرزاد-

mazdadoost
شنبه 21 اردیبهشت 1387, 19:39 عصر
سوالت رو یکم بازتر بکن. چه چیز بیشتری می خواهی بدانی؟ تقریبا تکنولوژیهایی که اینجا بحث شد در اکثر پروژه های agile استفاده می شود و معمولا بدون در نظر گرفتن سایز پروژه. اگر از من بپرسی که کلا جاوا به درد پروژه های کوچک بدرد نمی خورد. یک کاری هم که می توانی بکنی اینه که 3 تا پروژه (کوچک, متوسط, بزرگ) تعریف کنی و بشینیم بحث کنیم که هر کسی برای این پروژه های چه ترکیبی پیشنهاد می کند.


فرزاد-

دوست عزیز : در پست های دیگه هم عرض کردم.مثلا در مثالی که من زدم توضیح دادم که چه طور از Spring برای یه پروژه متوسط استفاده کردیم.حالا سایر دوستانی که با هر متولوژی دیگه ای که استفاده میکنن و کردن برای پروژه JavaEE شون از چه ترکیبی استفاده کردن؟ایا ترکیب مورد نظر انتظاراتشون رو براورده کرده؟آیا در زمان مورد نظرشون تمام کارها شون به همون نحوی که انتظار داشتن پیش رفته آیا در استفاده از یه فریم ورک با مشکلی مواجه نشدن؟اگر شدن به چه نحو؟آیا در پروژه بدیشون هم از همون فریم ورک استفاده کردن؟و به همین ترتیب.خود دوستان هم هر پروژه ای که داشتن بر اساس متدلوژیشون میتونن بگن سایز کارشون در چه حدی بوده.
با تشکر.

shgn_java
شنبه 28 اردیبهشت 1387, 00:55 صبح
ممنون از همگی!
لطفا لینک دانلود یکی از framework های خوب و ساده را برای یک تازه کار بفرستید؟!!
در ضمن وضیح نحوه استفاده را فراموش نفرمایید.:متفکر: