ورود

View Full Version : سوال: شروع جاوا ؟



qazwsx
دوشنبه 23 اردیبهشت 1387, 12:23 عصر
سلام آقا من یه 5 سالی میشه دلفی کار میکنم حالا مایکروسافت میخواد win32 رو از روی ویندوز پاک کنه وجبورم برم طرف دات نت میخواسم دلفی دات نت یا سی شارپ رو شروع کنم یکی از بچه ها گفت جاوا خیلی خوبه کل قسمت جاوا رو مطالعه کردم یه چیزای پیدا
کردم ولی چنتا سوال برام باقی مونده لطفا اینارو جوتب بدین
1-چنتا برنامه معرفی کردین برای تبدیل برنامه های جاوا به exe کار نمی کرد لطفا یه برنامه برام بزارین که خودتون امتحانش کرده باشین
2-بهتریت محیط ویژال برای جاوا چی
3-جاوا رو دات نت کار میکنه یا نه

qazwsx
سه شنبه 24 اردیبهشت 1387, 01:23 صبح
ممنون زود جواب دادین

hamed61de
چهارشنبه 25 اردیبهشت 1387, 01:15 صبح
۱- وقتی برنامه های جاوا به راحتی در ویندوز اجرا می شوند چه نیازی به exe داری
۲- بهترین محیط به نظر من نت بینز هست
۳- جی شارپ مشابه جاوا و روی دات نت کار میکنه ولی باز برنامه های جاوا هیچ نیازی به دات نت ندارند و هر جایی که ماشین مجازی جاوا نصب باشد کار می کنند

qazwsx
چهارشنبه 25 اردیبهشت 1387, 14:02 عصر
ببخشید چه چوری اجرا میشه

hadi000333
چهارشنبه 25 اردیبهشت 1387, 17:19 عصر
توسط jvm
java virtual machine ماشین مجازی جاوا
تو .net
.net framework این کار رو می کنه
در واقع توی هر سیستمی که شما jvm را نصب داشته باشید برنامه های جاوا اجرا می شن.

vcldeveloper
چهارشنبه 25 اردیبهشت 1387, 18:25 عصر
ممنون زود جواب دادین
حدود 2 سال هست که عضو سایت هستید، هنوز نمی دونید که تاپیک هایی که عنوان مناسب نداشته باشند، پاک میشند؟!

persianshadow
یک شنبه 29 اردیبهشت 1387, 09:10 صبح
1.برای تبدیل به فایل اجرایی ویندوز از GCJ استفاده کن . استاندارد و کدباز هست.ولی اکیدآ توصیه می کنم

که برنامه ات رو exe نکنی بلکه برای فایل های Jar یک برنامه نصب کننده بساز ، همین.

2. هم نت بینز خوبه و هم Jbuilder .

3. منظور شما از اینکه جاوا رو دات نت کار می کنه دقیقآ چی هست ؟ کلآ این دو ، دو پلتفرم

جداگانه هست ، اگه منظور شما J# هست باید ذکر کنم J# دیگه توسط مایکروسافت پشتیبانی

نمی شه.

milligator
یک شنبه 29 اردیبهشت 1387, 11:01 صبح
چطوری میشه تو نت بینز برای فایل های Jar یک برنامه نصب ساخت؟

jeus
پنج شنبه 02 خرداد 1387, 09:26 صبح
دوست من توضیحات بالا همگی درست هستند ولی من کاملا براتون توضیح میدهم
برنامه هایی که با جاوا نوشته می شوند jar.* کاملا portable هستند و روی ماشین مجازی که برای OS های محتلف طراحی شده است اجرا میشود به طور مثال شما فایل اجرایی با پسوند jar را تنها با کپی کردن در محیط ویندوز و لینوکس و حتی mac میتوانید اجرا کنید البته قبل از آن باید JVM مخصوص OS مورد نظر را نیز نصب کنید.
در واقع JVM هماهنگ کننده os های مختلف برای فایلهای JAR میباشد هرچند ادعا portable بودن رو زبان c هم داره اما واقعا این گونه نیست و شما باید کدهای زبان C را در OS مورد نظر recompile کنید .
تاکید به EXE نکردن برنامه های جاوا هم از همین جا ناشی میشه که شما با exe کردن فایلها در حقیقت قدرت اصلی جاوا را از اون گرفتید و اونو محدود به یک OS خاص میکنید (windows).
محیطهای IDٍE خوبی باسه java طراحی شده است که مبنی بر قدرت مورد نیاز و هزینه ای خرید نرم افزار برای کاربران متفاوت است شما میتوانید netBeans را از سایتش به صورت رایگان دانلود کنید (البته نه با IP ایران) و یا میتوانید نرم افزار های JBuilder و یا IDea را از بازار تهیه کنید .
جاوا و .net هم دو بحث جدا گانه اند و هر کدامشون یک platform مجزا هستند .

qazwsx
دوشنبه 06 خرداد 1387, 12:37 عصر
ممنون از جواب همه دوستان پس جاوا رو روی دات نت میشه اجرا کرد یه سوالدیگه هم دارم با جاوا میشه برنامه های سیستمی هم نوشت یا نه

mazdadoost
چهارشنبه 08 خرداد 1387, 13:31 عصر
دوست عزیز :
قبل از این که وارد بحث کلی شم بهتره کمی در باره جاوا صحبت کنم.
جاوا مجموعه ای از پلت فرم هاست.هر کدوم از این پلت فرم ها توضیح میدن که یه برنامه جاوا و محیط اجرایش باید چه طور باشند.این یعنی اینکه شما کد هاتون رو به زبان جاوا برای یه پلت فرم خاص جاوا مثلا JavaSE بنویسد و بعد Deploy ش کنید.
نوشتن یه برنامه جاوا برای مثال ما در JavaSE به این سگمنت ها تقسیم میشه:
1-کد برنامتون رو مینویسید.
2-با کامپایلر جاوا کامپایلش میکنید.
3-خروجی کامپایلر در هر محیطی چه Windows-Linix و یا Mac همیشه فایل های به نام بایت کد هستند.این فایل ها دستور العمل های Binary هیچ CPU ای نیستن.پسوند این فایل ها class. هست.این فایل ها دستور العمل های یه CPU نرم افزاری به اسم ماشین مجازی جاوا یا JVM هستن.این ماشین نرم افزاری میتونه به هر زبان برنامه نویسی و برای هر سختافزار و CPU ای طراحی بشه.تنها کاری که باید به انجامش توانا باشه اینه که بتونه دستور العمل هایی که در فایل class هست برای اون یه سخت افزار خاص مورد نظرش ترجمه کنه.
پس این یعنی شما می تونید برنامتون رو در ویندوز بنوسید و با کامپایلر جاوا که با JDK ویندوز میاد کامپایل کنید و بدون نگرانی در JVM های موجود برای Mac-Linux -و ... اجراش کنید.

این که برنامه ها اصولا چطور در اختیار کاربر نهایی قرار میگیرند اغلب برای کسانی که می خوان به سمت جاوا مهاجرت کنن همیشه سوال بوده. و من سعی میکنم تا حد زیادی در این Post این مطالب رو پوشش بدم.
اصولا انتشار برنامه ها در جاوا میتونه از چند جهت مورد برسی قرار بگیره.
1-استفاده از امکانات ذاتی خود جاوا : این روش شامل موارد زیر میشه :
الف:فایل های جار و کلاستون رو با دستور java و یا java -jar اجرا کنید.میتونید همه ی کار ها رو در Bat فایل های ویندوز یا shl فایل های یونیکس و لینوکس خودکار کنید.کافیه کاربر روی اون فابل ها مثلا دبل کلیک کنه.در این روش کنسول جاوا در خط فرما اجرا میشه و پنجره Command Promt و یا bash لینوکس به همراه برنامه نمایش داده میشه.
ب)استفاده از java wen start(Java Web Start):از جاوا 5 به بعد سان این روش دیپلوی کردن خیلی راهت رو با جاوا همرا کرد تو این روش کافیه به فایل های جار در پوشه manifest فایلی به اسم MANIFEST.MF بذارید و بگید نقطه شروع برنامه که کلاسی با متد Main هست چیه.با یه دبل کلیک روی فایل جار برنامه اجرا میشه.همچنین می تونید از jnpl برای برنامه های اینترنت استفاده کنید.تو این روش با فایل های جار فایلی با پسوند jnpl با فرمت XMl بذارید.و در وب سایتتون به این سایت لینک بدین.این فایل روی کامپیوتر کاربر دانلود میشه و JWS بازش می کنه و بر اساس توضیحاتی که درش هست تمام پروسه لود کردن کلاس ها و حتی JRE خاص یا Lib فایل ها رو انجام میده و برنامه رو کامل دانلود میکنه و در کش سیستم میذاره.دفعه بعد کل برنامه از کش خونده میشه!اگه هم به اینترنت وصل باشید چنانچه برنامه اپدیت شده باشه به شما اطلاع میده که می خواین برنامه رو به روز کنید؟از طرفی اگه برنامتون با محدودیت های Sandbox محدود بشه خیلی راحت این امکانو میده تابدون نگرانی از Sign کردن jar ها برنامه با مسئولیت کاربر اجرا شه.این ها بهترین روش Deploy کردن برنامه هاست.چرا که به بهترین شکل برنامتون فقط به خود جاوا وابسته است, که همین انتظار هم داریم!
3-استفاده از Warper ها:در این روش شما اجرای برنامه رو از طریق فایل های اجرایی Native یه سیستم خاص آغاز میکنید.تو این روش میتونید با کمی کد نویسی مثلا برای ویندوز برنامه ای بنویسد که برنامتون رو با JRE اجرا کنه.البته ابزار هایی هم هستن که در پایان فهرست میکنم.البته در این روش برنامه شما از طریق JNI با dll های jre مستقیما بدون استفاده از دستور java اجرا می کنید!یکی از مزایای این روش اینه که برنامه Luncher شما میتونه آیکن و دکمه اختصاصی در Taskbar سیستم عامل داشته باشه ویا اینکه میتونید برنامتون رو در پروسه ای به جز java.exe و یا javaw.exe اجرا بشه.البته هم در این روش و هم در روش اصلی اصول جاوا پا برجاست.یه نکته در مورد ه دوی اینها اینه که Startup برنامه های جاوا کمی کنده!و این به خاطر طبیعت ذاتی خود جاواست.بعضی از این ابزار حتی میتونن چک کنن ایا jre نصب شده یا نه. و اگه نشده باشه میتونن خودشون این کارو انجام بدن.و...
4-استفاده از Installer های حرفه ای:گاهی شما به امکاناتی مثل فشرده سازی کل برنامه با jre مورد نظرتون(به نحوی که با jre که خود کاربر استفاده کرده متفاوت باشه!)و یا اینکه یه کلاس جاوارو به عنوان یه سرویس ویندوز یا Demoan لینوکس یا یونیکس اجرا کنید و یا...در این حالت ها میتونید از اینستالر های حرفه ای که درانتها میارم ایتفاده کنید.تا اینجا هم شما هنوز jar ها و کلاس هاتون رو منتشر میکنید.
5-Ahead-Of-Time Compilers:در این روش کل برنامه جاوا به برنامه Native یه سیستم خاص کامپایل میشه.در این حالت دیگه به برنامه شما برنامه جاوا اطلاق نمیشه.و کاملا به پلت فرم بستگی خواهد داشت.مزایای این روش :
الف)گرچه JIT در حین اجرا کد های بایت کد ها رو به Native کد ترجمه و اجرا میکنه. وحتی میتونه این Native کد ها رو تحت شرایطی در جایی از حافظه ذخیره و برای فراخانی بعدی در اختیار Runtime بذاره
و البته موارد متنوع دیگه ای که میتون سرعت بایت کد ها رو به کد های کامپایل شده C و IL های دات نت برسونه
با این وجود مجموعه این تکنیک ها بار کاری اضافه ای بر سیستم و حافظه اعمال میکنه.در صورتی که شما برنامتون رو به کد اجرایی یه سیستم خاص مثلا ویندوز (EXE)
تبدیل کنید برنامه شما خیلی سریعتر اجرا خواهد شد و منابع کمتری رو مصرف خواهد کرد!
ب) دیکامپایلر های جاوا بسیار راحت کد شما رو دیکامپایل میکنن!و این یعنی کد شما به راحتی میتونه در اختیار دیگران قرار بگیره.شما میتونید کد هاتون رو Abfuscate کنید.در این صورت با محدودیت هایی مثل عدم سازگاری کد های تولید شده در تکنیک بهم ریختن جریان کنترل برنامه با JVM های بعدی و یا اینکه کد های تولید شده برای تکنیک های بهینه سازی Jvm
نا مفهوم میشه.با استفاده از AOT کد های تولید شده کمی برای شکستن سختر میشن.و سرعت اجرای بهتری پیدا میکنن.
ج)شاید مهمترین علت برای استفاده از AOT ها این باشه که برنامه شما بدون نیاز به JRE و JVM اجرا خواهد شد.این برای برنامه نویسانی که از سایر پلتفرم ها مثل زی -پاسکال -دلفی-ویژوال بیسک و سایر زبان های کامپایلری محض به جاوا مهاجرت می کنن همین دلیل باشد.دات نت هم با اسمبلی هاش چنین چیزی رو دنبال میکنه.

معایب:
الف)برنامه هایی که از بایت کد های شما کد EXE میسازند ففط میتونن فایل های مجود شما رو کامپایل کنن.در جاوا ما میتونیم کلاس ه رو حین اجرا در برنامه با استفاده از مکانیزم ی مثل Dynamic Class Loading از منابع مختلف حین اجرا بارگیری کنیم.و این یعنی کد برنامه شما در صورتی که حین اجرا از این تکنیک استفاده کنه نمیتونه پس از تبدیل از این مکانیزم استفاده کنه چون فایل مثلا EXE درکی از فایل های زمان اجرا به فرمت Class نداره!)JIT کامپایلر جاوا در پلت فرم های مختلف به شکلی بسار بهینه پیاده شده.مثلا در CPU های اینتل میتونه بر اساس آرشیتکت CPU بهترین و بهینه ترین دستورات رو به جای مثلا مجموعه کد های استاندارد X86 پایه هست.AOT ها مجبورا از همین دستورات عمومی پلت فرم استفاده کنند.و مهمتر اینکه فایل های EXE فقط روی ویندوز اجرا میشن.این یعنی برنامه شما قابلیت انتقال رو از دست میده.و این مهمترین ویژگی جاواست که با این کار از بین میره!

در نهایت اگر بخواید از جاوا استفاده کنید باید به جاوا به عنوان جاوا استفاده کنید.همون چیزی که باعث بوجود آمدن جاوا شده باعث بوجود آمدن ویژه گی های اختصاصی جاوا شده.جاوا جاواست و دات نت و دلفی هم برای خودشونن!هر چیز بهایی داره.و مطمئن باشید که چیزی هایی که برای جاوا شاید به نحوی محدودیت باشند اما نسبت به چیز هایی که براش به ارمغان میارند بسار ناچیزند!
شما گفتید که برنامه نویس دلفی بودین.دلفی به عنوان فرزند Obect Pascal از نظر تقسیم بندی چیزی بیشتر از یه زبان کامپایلری نیست!همونطور که شما در دات نت کد های Native پلت فرم که در Win32 Api و COM رو به شکل سادتری فراخانی میکنید.در دلفی هم همینکارو با API های وارپر شرکت بورلند برای Windos API انجام میدین.پس مادامی که برنامه محیطی مثل دات نت و دلفی عمده کارشون وارپ کردن Native کد های سیستم عامل ویندوز باشه شما نگرانی از بابت پشتیبانی مایکروسافت از مثلا Win32 یا هر چیزی نخواهید داشت.در هر صورت شما از دلفی و دات نت برای استفاده ساده از Native کد های ویندوز استفاده خواهید کرد و لزومی نداره نکران پشت پرده باشد.از طرفی شما بر اساس چه منبعی در تاپیک میفرمایید جاوا روی دات نت اجرا میشه!اگه می خواید از ویندوز استفاده کنید و دات نت به نظرم بد فهمی محضه که بخواید ایده اجرای جاوا روی دات نت رو دنبال کنید.از طرفی شما فرمودین که با دلفی کار میکنید.
1-اگه میخاید برای دسکتاپ های ویندوز برنامه بنویسید دلفی خیلی خوب جواب میده.مخصوصا برای دیتا بیس و حتی برنامه های سیستمی و استفاده از امکانات پلت فرم ویندوز.
2-اگه میخواید به دات نت مهاجرت کنید باز هم بهتره ار دلفی دات نت استفاده کنید!اینطوری میتونید از ابرار های خاص بورلند اتفاده کنید هر چن بهتره C# رو انتخاب کنید.
3-هر چند میتونید به زبان J# با دستور زبان جاوا و مقداری ار API جاوا 1.1 استفاده کنید اما باز هم کد های شما در دات نت و CLR اجرا میشه.این یعنی دات نت!
4-چنانچه به دنبال فلسفه کاربرد جاوا هستید به جاوا مهاجرت کنید!


استفاده از Jar های معمولی:
1-ابزار های خود jdk
2-javaluncher- one-jar -fatjar-autojar
استفاده از Jnpl
1-Xito-Application Manager Deploy Director
استفاده از اینستالر های جداگانه:
1-izPack :کاملا جاوا
2-Installanywhere-installAware-installshield
...
نمونه هایی برای ساخت وارپر برای جار فابل ها :
1-در Jbuiler 2006 این امکان وجود داره.
2-JEXEcreator-exe4j-naitveJ-jLunch-execJ-jexepack...
نمونه برای AOT ها :
1-GCJ مجانی
2-Excelsior jet
3-Aonix PERC
موفق باشد.

qazwsx
چهارشنبه 08 خرداد 1387, 14:52 عصر
ممنون از جواب کاملتون به این نتیجه رسیدم اگه بخوایم بریم سمت لینوکس جاوا بهترین گزینه هست وبرای ویندوز دلفی یا سی شارپ و..

Seyyed ali
پنج شنبه 20 تیر 1387, 11:29 صبح
برنامه نویسی در لینوکس python
البته استفاده از qt نیز برای شما شیرین خواهد بود.

jeus
پنج شنبه 20 تیر 1387, 11:55 صبح
ممنون از جواب کاملتون به این نتیجه رسیدم اگه بخوایم بریم سمت لینوکس جاوا بهترین گزینه هست وبرای ویندوز دلفی یا سی شارپ و..
دوست من جاوا همیشه بهترین گزینه است چه در ویندوز چه در دیگر سیستم عاملها