یوشا

دست نوشته ها و تجربیات شخصی

یوشا

دست نوشته ها و تجربیات شخصی

شهید دکتر مصطفی چمران: می گویند تقوا از تخصص لازمتر است، آنرا می پذیرم، اما می گویم آنکس که تخصص ندارد و کاری را می پذیرد بی تقواست!

طبقه بندی موضوعی
تبلیغات
Blog.ir بلاگ، رسانه متخصصین و اهل قلم، استفاده آسان از امکانات وبلاگ نویسی حرفه‌ای، در محیطی نوین، امن و پایدار bayanbox.ir صندوق بیان - تجربه‌ای متفاوت در نشر و نگهداری فایل‌ها، ۳ گیگا بایت فضای پیشرفته رایگان Bayan.ir - بیان، پیشرو در فناوری‌های فضای مجازی ایران

 

نرم افزار Java Development Kit(به اختصار JDK) پکیجی هست که توسط شرکت Sun Microsystems (و اکنون Oracle) برای تولید و اجرای برنامه های Java طراحی و به بازار عرضه شده.

نکته: Java یک زبان برنامه نویسی کامپیوتر، سطح بالا و شی گرا هستش که توسط شرکت Sun برای تولید برنامه های مستقل از بستر اجرایی طراحی شده. به این معنی که برنامه های تولید شده توسط این زبان قادرن برروی همه سیستم عامل های Desktop اجرا و استفاده بشن.

پکیج JDK حاوی تعدادی کتابخانه، برنامه، ابزارهای کمکی و مستندات جهت تولید و نوشتن برنامه های Java هستش. چیزی شبیه به Windows SDK, Android SDK, .Net SDK و...

نکته: JDK درواقع Software Development Kit(به اختصار SDK) محسوب میشه برای همین به اون Java SDK هم گفته میشه.

درحال حاضر قادرید پکیج JDK رو بر روی سیستم عامل های Windows, GNU/Linux, Solaris, MacOS نصب و اجرا کنید اما من در این مقاله به نصب JDK برروی سیستم عامل Windows میپردازم. (Oracle JDK و OpenJDK)

برای کسب اطلاعات بیشتر راجب این پکیج به ویکی JDK مراجعه کنید.

 

فهرست مندرجات:

  • JDK یا JRE
  • سیستم مورد نیاز
  • دریافت JDK
  • نصب و تنظیم JDK
  • نکات
  • رفع مشکلات

 

  • JRE یا JDK

JDK با JRE تفاوت داره! JRE (مخفف Java Runtime Environment) شامل کتابخانه ها و برنامه های اجرا کننده جاوا هستش. در صورتیکه JDK شامل JRE، هدر ها، دیتابیس، javadoc, ابزارها و برنامه های توسعه جاوا هستش... در واقع JRE زیر مجموعه JDK هستش.

- بنابراین JRE برای کاربران عادی هستش که قصد اجرای برنامه های Java رو دارن.

- ولی JDK برای توسعه دهندگان هستش که فصد تولید و اجرای برنامه های Java رو دارن.

پس شما اگر توسعه دهنده هستید، باید JDK رو دانلود و نصب کنید.


JDK = JRE + development tools + debugging tools + sources + documents...

JRE = JVM + Java classes(network, math, awt, swing...) + runtime libraries...

JVM = Java class loader + runtime data area(memory) + execution engine...

 

  • سیستم مورد نیاز

حداقل های مورد نیاز برای نصب و استفاده از نرم افزار JDK در ویندوز:

1- پردازنده/سخت افزار x64 یا x86

2- سیستم عامل ویندوز 8/8.1 ,7 ,Vista, XP یا 10 با معماری 32bit یا 64bit

نکته: البته JDK بر روی سیستم عاملهای گنولینوکس و مک هم قابل نصب هست.

3- تقریباً 400mb فضا در Disk

4- 128mb فضا در RAM

نکته: اختصاص فضای RAM کمتر از این مقدار باعث فعال شدن سیستم Paging File ویندوز و کاهش پرفورمنس برنامه های جاوا خواهد شد.

 

  • دریافت JDK

برای دریافت JDK میتونید به یکی از لینک های زیر مراجعه کنید:

نکته: موقع انتخاب به کلمه x86 و x64 توجه کنید... اگر از سخت افزار ARM استفاده می کنید به اینجا مراجعه کنید.

محصول Oracle:

http://oracle.com/technetwork/java/javase/downloads/index.html

http://jdk.java.net/8

یا محصول Azul:

https://www.azul.com/downloads/zulu/zulu-windows

یا محصول OpenJDK:
https://github.com/ojdkbuild/ojdkbuild

 

  • نصب و تنظیم JDK

توجه: اگر از قبل نرم افزار JDK یا JRE رو نصب دارید، ابتدا باید اونهارو Uninstall کنید.

1- بعد از دانلود JDK، اون رو اجرا کنید و تا آخرین مرحله دکمه Next رو بزنید.

توجه: در صورتی که از نوع فشرده/zip شده JDK استفاده می کنید، کافیه اون رو extract و به محل دلخواه مثل C:\Program files\JDK انتقال بدید.

 

2- بعد از نصب JDK، نوبت به شناسوندن محل محتویات JDK به سیستم توسط تنظیم PATH و JAVA_HOME هستش.

 

تنظیم PATH

مقدار PATH برای JDK درواقع به محل برنامه های اصلی خود Java اشاره میکنه که این برنامه ها شامل javac, java, appletviewer, jdb و... هستن.

برای اینکار به مسیر Start -> Control panel -> System یا به Start -> Control panel -> System and security-> System برید. حالا از منوی سمت راست گزینه Advanced system setting رو بزنید. بعد به زبانه ی Advance برید، دکمه Environment variables بزنید. حالا در پنجره باز شده، داخل کادر (بالایی یا پایینی) نام PATH رو پیدا و بازش کنید.

 



نکته: اگر نام PATH رو ندارید روی دکمه New کلیک کنید و یکی با نام PATH بسازید و:

در ابتدای فیلد Variable value، مسیر bin نصب شده JDK خودتون رو بهمراه یک ;\ در آخرش وارد کنید. مثل:

C:\Program Files\JDK\bin\;
یا
C:\Program Files\Java\dk8\bin\;
یا
C:\Program Files (x86)\Java\dk8\bin\;

بعد Ok کنید.

 

تنظیم JAVA_HOME

مقدار JAVA_HOME برای JDK درواقع به محل نصب JDK اشاره میکنه که حاوی برنامه های اصلی خود java, پکیج tools.jar مستندات Java، کتابخانه ها، JRE، دیتابیس و... هستش.

برای تنظیمش در همین پنجره Environment variables در کادر پایینی/System دکمه New رو بزنید. بعد در فیلد Variable name نام JAVA_HOME رو بنویسید و در فیلد Variable value مسیر JDK رو بهمراه یک \ در آخرش وارد کنید. مثل:

C:\Program Files\JDK\
یا
C:\Program Files\Java\dk8\
یا
C:\Program Files (x86)\Java\dk8\

بعد Ok کنید.

 

تنظیم JDK_HOME

مقدار JDK_HOME هم مثل JAVA_HOME به محل نصب JDK اشاره میکنه که حاوی برنامه های اصلی خود java, پکیج tools.jar مستندات Java، کتابخانه ها، JRE، دیتابیس و... هستش.

برای تنظیمش در همین پنجره Environment variables در کادر پایینی/System دکمه New رو بزنید. بعد در فیلد Variable name نام JDK_HOME رو بنویسید و در فیلد Variable value مسیر JDK رو بهمراه یک \ در آخرش وارد کنید. مثل:

C:\Program Files\JDK\
یا
C:\Program Files\Java\dk8\
یا
C:\Program Files (x86)\Java\dk8\

بعد Ok کنید.

 

تمام!

حالا برای تست، برنامه Command Prompt سیستم رو باز کنید و بنویسید java و بعد Enter  کنید.

نکته: برای پیدا کردن برنامه Command Prompt، منوی Start  رو باز کنید و بنویسید cmd و بعد انتخابش کنید تا باز بشه. مثل تصویر زیر:

 

 

اگر همه چیز درست باشه با یک لیستی از پارامترها مواجه میشید... در غیراین صورت برنامه Command Prompt رو ببندید و دوباره باز کنید. (چون مقادیر داخل PATH هنگام باز شدن کنسول سیستم Load/Reload میشن)

نکته: درصورتی که از پکیج OpenJDK استفاده می کنید مطمعن بشید که کامپونت JavaFX رو بهمراه داشته باشه.

 

  • نکات

- برای حذف Java نصب شده بصورت دستی به Control Panel ویندوز برید و برنامه Programs and Features یا Add/Remove Programs رو باز کنید. سپس Java نصب شده رو پیدا و Uninstall کنید.

و یا توسط ابزار Java Uninstall Tool میتونید براحتی نسخه های نصب شده Java در سیستم رو حذف کنید.

https://www.java.com/en/download/uninstalltool.jsp

 

- برای نصب shell مخصوص Java میتونید BeanShell رو دانلود و در مسیر JAVA_HOME/jre/lib/ext کپی کنید.

برای اجرای اسکریپت، دستورات زیر رو در کنسول/shell سیستم وارد کنید:

java bsh.Console // Runs Beanshell GUI
java bsh.Interpreter // Runs Beanshell commandline
java bsh.Interpreter <filename> // run Beanshell scriptfile

نکته: از JDK نسخه 9 به بعد قادرید از shell جدیدی بنام JShell استفاده کنید که میتونه جایگزین خوبی برای BeanShell باشه.

 

- برای دیدن مشخصات Java نصب شده روی سیستم کافیه دستور java -version رو در برنامه Command Prompt بزنید:

C:\java
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

 

- برای اجرای برنامه های Java بشکل زیر عمل کنید:

java MyApplication.class
یا
java -jar MyApplication.jar

 

- تنها تفاوت متعیر JAVA_HOME و JDK_HOME در این هست که JDK_HOME به مسیر نصب شده Java SDK / JDK اشاره میکنه اما JAVA_HOME به مسیر نصب شده Java Runtime / JRE اشاره میکنه.

 

- توضیحاتی مختصر راجب محتویات داخل JDK:

برنامه appletviewer: برای نمایش برنامه های Applet جاوا.

برنامه javac: برای کامپایل سورسهای جاوا به برنامه/بایت کد.

برنام java: مجری و مفسر برنامه های جاوا (شامل فایلهای JAr و class)

برنامه javap: برای دیکامپایل برنامه های جاوا / class.

برنامه javadoc: برای تولید مستندات و صفحات HTML پروژه/سورس.

برنامه jdb: برای پیدا کردن و رفع اشکالات برنامه های جاوا.

 

تشریح CLASSPATH

برای استفاده ClassLoader های خود Java طراحی شده و حاوی bytecode(در Java با پسوند class یا JAr) و nativecode(در C با پسوند o. یا obj.) های کامپایل شده هستش. درواقع بخشی از پکیج اصلی Java/C هستش و به java و javac اعلام میکنه که فایلهای کامپایل شده در کجا قرار دارن.

توجه: با اضافه کردن کتابخانه به CLASSPATH، کتابخانه مورد نظر در تمام پروژه ها قابل استفاده هستش، لیکن بصورت Relative link.

نکته: مقدار CLASSPATH میتونه توسط پارامتر -cp در برنامه java و javac و خاصیت Class-Path در فایل manifest.mf تغییر پیدا کنه. اما نهایتاً خاصیت Class-Path در فایل manifest.mf نسبت به CLASSPATH و پارامتر -cp اولویت داره.

نکته 2: همیشه علاوه بر مسیر lib خود JDK، مسیر جاری رو هم توسط نقطه . در CLASSPATH اضافه کنید.

نکته 3: در صورت وجود کتابخانه در همه مسیرهای موجود در CLASSPATH، همیشه اولین مسیر انتخاب خواهد شد.

نکته 4: این تنظیم در برنامه Eclipse در مسیر Preferences -> [Java/C] -> Build path -> Classpath قرار داره.

 

بهتره همیشه مقدار متغیر HOME رو در Envoironment variables سیستم تنظیم کنید تا برنامه هایی که از مسیر این متغیر استفاده می کنن دچار مشکل نشن:

- ابتدا روی My Computer (یا This PC) کلیک راست کنید، بعد گزینه آخر Properties رو انتخاب کنید، حالا گزینه Advanced system settings رو بزنید، سپس در پنجره باز شده به زبانه Advance برید و دکمه Environment variables رو بزنید. نهایتاً دکمه New رو بزنید و مقدار Variable name رو بنویسید HOME و مقدار Variable value رو بنویسید %USERPROFILE%

 

  • رفع مشکلات

 در صورت بروز مشکل در Uninstall کردن Java به این لینک مراجه کنید و یا از برنامه رایگان Wise Program Uninstaller استفاده کنید.

 

اگر هنگام اجرای دستور java در Command Prompt با خطای 'java' is not recognized as an internal or external command, operable program or batch file. مواجه شدید، بدونید که مسیر نصب شده جاوا در متغیر PATH رو درست ثبت نکردید.

 

تشریح مشکل ClassNotFoundException و NoClassDefFoundError:

- مشکل ClassNotFoundException: از نوع Exception هستش و زمانی پرتاب میشه که برنامه جاوا بصورت Dynamic سعی در load کردن کلاس موردنظر حین Run-time از مسیر CLASSPATH کنه اما نتونه پیداش کنه.

- مشکل NoClassDefFoundError: از نوع Error هستش و زمانی بوجود میاد که کلاس موردنظر در مسیر CLASSPATH حین Compile-time وجود داره اما حین Run-time وجود نداره.

۹۳/۱۱/۰۷

نظرات (۸)

java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) Client VM (build 25.271-b09, mixed mode, sharing)

 

پاسخ:
نسخه Android Studio ای که دانلود و نصب کردید چند هست؟

و این دستور رو در Cmd سیستم بزنید ببینید خروجیش چی هست؟
echo %JAVA_HOME%

همچنین این دستور رو:
echo %JDK_HOME%

دقیقا jdk رو نصب کردم ،
و ویندوز 7 و 32 بیتی دارم 

پاسخ:
دستور java -version  رو در برنامه Cmd بزنید ببینید چه پیامی میده؟
Cmd = Command Prompt

سلام و وقت بخیر 

پس از نصب اندروید استودیو و در هنگام اجرا پیام زیر میاد ، لطفا راهنمایی کنید چیکارش باید بکنم 

Cannot load a JDK class: com.sun.jdi.Field
Please ensure you run the IDE on JDK rather than JRE.

پاسخ:
سلام

خود پیام خطا داره میگه مشکل از کجاست:
شما احتمالا بجای نرم افزار JDK، نرم افزار JRE رو نصب کردید...
مقاله رو با دقت و "کلمه به کلمه" بخونید.

اگر سیستم شما ویندوز 64 بیتی هست این رو دانلود و نصب کنید:

سلام این پیام هنگام نصب اندروید استودیو میاد چیکار کنم؟

لطفا راهنمایی کنید

jdk class: com.sun.jdi

پاسخ:
سلام
پیام خطا رو ناقص گذاشتید... متن کامل رو بذارید

با سلام

چرا در start server در قسمت java db در برنامه net beans غیر فعال است؟

ممنون میشم کمک کنید

پاسخ:
سلام
مطمعنید که "GlassFish" و "Java DB" نصب هست؟

 

این یعنی چی ؟

Unload is not allowed: A class loader can load a class but cannot unload it. Instead of unloading, the current class loader can be deleted, and a new class loader can be created.

 

class loader 

 اون قسمتی که ورودی ماشین مجازی رو تامین میکنه

اون قسمت که ByteCode ها و Libraries ها رو به JVM تحویل میده 

پاسخ:
http://blog.jamesdbloom.com/JVMInternals.html

https://dzone.com/articles/understanding-jvm-internals

https://www.cubrid.org/blog/understanding-jvm-internals/

سلام

JVM = Java class loader + runtime data area(memory) + execution engine

jvm بار کننده داره؟ یا بار کننده کتابخانه ها را به ماشین مجازی تحویل میدهد؟

نگاه کنید

https://images.idgesg.net/images/article/2018/09/jre-100771531-medium.jpg

https://www.javaworld.com/article/3304858/what-is-the-jre-introduction-to-the-java-runtime-environment.html

ctrl+Kایراد دارد 

 

پاسخ:
سلام
منظور شما از "بارکننده" چی هست دقیقاً؟
کاربران بیان میتوانند بدون نیاز به تأیید، نظرات خود را ارسال کنند.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">