اخلاق
تاریخ
یکی از اولین کتابهایی که مستقلاً به علم اخلاق پرداخته است کتاب اخلاق نیکوماخوس اثر ارسطو است.
ارتباط اخلاق با علوم دیگر
جایگاه اخلاق در نقشهٔ علم، در انتهاست
دسته بندی علوم توسّط خواجه نصیر الدین طوسی در آغاز کتاب اخلاق ناصری، جایگاه علم اخلاق را در بین سایر علوم چنین آورده:
علومی که به شناخت موجودات میپردازند
نظری: وجود موضوع آنها وابسته به حرکت ارادی انسان است.
ما بعد الطبیعه: موضوعشان مجرد از ماده
ریاضی
۴ قسم
طبیعی
۸ قسم
عملی: وجود موضوع آنها مستقل از حرکت ارادی انسان است «این علوم دانش به مصالح حرکات ارادی و افعال صناعی انسان هستند، به گونهای که احوال آنها را سازمان دهند و آنان را به کمال شایسته شان برساند.»
تهذیب اخلاق: در مورد امور فردی بحث میکند
تدبیر منزل: مربوط به گروه کوچکی که
سیاست مدن: مربوط به جمعی است که در شهر، مملکت و مانند آن زندگی میکنند
وابستگی
علم اخلاق مبادی اش را از علوم منطق، مابعدالطّبیعه(یعنی فلسفه) برای مبادی هستی شناختی، و علمالنّفس(انسان شناسی) و روانشناسی میگیرد. شاخهای از اخلاق که عهده دار تامین مبادی اخلاق است فرا اخلاق نام دارد. لذا فرا اخلاق یک علم درجه دوم است. یعنی چون بر اساس علم منطق علوم را باید بر حسب موضوع شان و نه محمول شان دسته بندی نمود؛ و موضوع فرااخلاق در علوم دیگر است؛ فرا اخلاق یک علم یا شاخهای از آن نیست.
پیش درآمدی
علم اخلاق در فراهم آوردن مبادی علم حقوق و سیاست و تدبیر مُدُن نقش دارد. ارسطو، کتاب اخلاق نیکوماخوس اش را به عنوان مقدّمهای برای کتاب سیاست مُدُنش نوشته
علم اخلاق بعضی از مبادی دو علم تدبیر منزل و سیاست مدن را نیز تأمین میکند.
شاخههای اخلاق
اخلاق به سه شاخهٔ کاملاً مجزا تقسیم میشود∗:
فلسفه اخلاق که شاخهای از فلسفه∗ است و وظیفهٔ آن پاسخ به پرسش هایی از این قبیل بعنوان پایهٔ اخلاق نظری ست:
خوب و بد یعنی چه؟
ماهیت و حقیقت∗ مفاهیم اخلاقی چیست؟
قضایا∗ی اخلاق اخباری اند یا انشایی∗؟
مسائل اخلاقی جهانی و جاودانه (مطلق) اند، یا سرزمینی و موقّت (نسبی)؟
معیار کلی خوبی و بدی یک صفت یا رفتار اخلاقی چیست؟
شرایط و حوزههای مسئولیت اخلاقی چیست؟
اخلاق نظری که وظیفهٔ آن مطالعهٔ صفات و اعمال اخلاقی و پاسخ به انتظاراتی است از قبیل:
شناسایی، دسته بندی و تعریف صفات و اعمال اخلاقی در حوزهٔ عمومی
شناخت ریشهها و پیامدهای آنها
قضاوت در مورد خوبی یا بدی صفات کلان (صفاتی که محدود به حوزهٔ خاصی از زندگی نیستند). این قسمت از اخلاق یک فن یا روش یا قانون یا باید و نباید است، نه یک علم. یعنی مربوط به آنچه باید، نه آنچه هست.
شناسایی حوزههای خاص اخلاق∗.
دادن قدرت استدلال در مورد خوبی یا بدی اعمال و صفات اخلاقی در حوزههای خاص به آموزنده.
اخلاق عملی یا تربیت اخلاقی∗ فنی ست برای رسیدن از وضعیت مطلوب ناموجود به وضعیّت موجود مطلوب در اخلاق. از این نظر اخلاق اساس معنویت است؛ و انسانی که اخلاقی تر است، معنوی تر نیز هست∗. همچنین این قسم از اخلاق یک فن است. از مهمترین مسائل مطرح در این حوزه میتوان به موارد زیر اشاره کرد:
شناخت و استفاده از مبادی رفتار
مبادی رفتار از نظر علمای پیشین از این قرار است: تصور + تصدیق∗ به فایده + شوق موءکد.
روان شناسان معصر ترکیب مشابه دیگری را پیش رو نهادهاند: شناخت + انگیزش + توان عملی.
روش ایجاد و از بین بردن صفات اخلاقی
اخلاق در اسلام
مبانی مورد قبول علماء علم اخلاق در قدیم سه رکن بوده است و در عصر جدید هم گرچه فروعاتی بر آن افزوده شده است و توسعه یافته است اما می توان گفت ارکان آن در سه مورد خلاصه می شود نخست تهذیب نفس، تدبیر منزل و سیاست مُدُن که علماء اخلاق عناوین سه گانه فوق را به صورت زیر تجزیه و تقسیم نموده اند قسم اول را تخلیه، تحلیه و تجلیه دانسته اند و قسم دوم را گفته اند مراد علم معاش و معاشرت با همسر و فرزندان است و سوم مربوط به حفظ و حراست از کشور است.
توضیحات
^ علوم انسانی دستهای از علوم دانشگاهی اند که در آنها با روشهای عموماً تحلیلی، انتقادی و تفکری-تعمقی امور انسانی را مطالعه میکنند. این روشها معمولاً در تقابل با روشهای تجربی در علوم پایه و علوم اجتماعی قرار میگیرند. (ویکیپدیا)
^ که به هیچ وجه محدود به زبان فارسی و فرهنگ اسلامی نیست.
^ در روانشناسی در مورد معنای آن بحث میشود.
^ برای مطالعه در مورد عادت و شرطیسازی و یادگیری به کتاب روانشناسی عمومی، دکتر حمزه گنجی یا منابع مشابه رجوع فرمایید.
^ این شاخهها با هم اشتباه گرفته نمیشوند. اما از سویی در بسیاری از منابع قدیم اخلاق، علم اخلاق صرفاً به دومی و سومی اطلاق میشود (مانند معراج السّعاده)؛ و از سویی هم در متون غربی جدید از اخلاق صرفاً به عنوان شاخهای از فلسفه یاد میشود و قسمت دوم و سوم نیز گاه جزو آن میآید.
^ فلسفه مطالعهٔ مسائل کلی و اساسی پیرامون موضوعاتی چون وجود، آگاهی، حقیقت، عدالت، زیبایی، اعتبار، ذهن و زبان است. وجه افتراق فلسفه با راههای دیگر پرداختن به این پرسشها (راههایی نظیر عرفان و اسطوره) رویکرد نقّادانه و معمولاً سامانمند فلسفه و تکیهاش بر استدلالهای عقلانیاست. (ویکیپدیا)
^ اصطلاح فلسفی. رجوع شود به آشنایی با علوم اسلامی، جلد 1، اثر شهید مطهّری
^ اصطلاحی در علم منطق. رجوع شود به منطق کاربردی، اثر علی اصغر خندان
^ دو نوع جمله در علم زبان شناسی
^ مدرّسان گاه این قسمت را اخلاق کاربردی می خوانند. اما این نامی برای اخلاق اختصاصی نیست.
^ عرفان عملی مساوی اخلاق عملی نیست، بلکه صرفاً بهترین فن تربیت اخلاقی، آن هم در محدودهٔ اخلاق اسلامی ست. نه در قلمرو کلّی اخلاق.
^ به طور مشابه، در صنعت تولید دقّت اندازه ملاک کیفیت است. محصولی بهتر است، که در طی فرایند تولید، در ابعادی هر چه دقیق تر ساخته شده باشد.
^ تصوّر و تصدیق دو اصطلاح در علم منطق اند. رجوع شود به منطق کاربردی، اثر علی اصغر خندان
درستکاری
اخلاقیات می تواند فردی باشد، در این حالت شامل یک باید شخصی است، شخص خود تصمیم گیرنده و وضع کننده قانونی است که او را به انجام یا عدم انجام فعلی ملزم می کند. در این حالت هدف اخلاقیات و درستکاری، پیشبرد و بهبود وضعیت زندگی در جامعه است.
تئوریهای مختلفی در مورد رابطه بین اخلاقیات و درستکاری وجود دارد. تحلیلگران از دو دایره برای نشان دادن رابطه این دو مقوله استفاده می کنند. برای بعضی از آنها، این دو دایره هم مرکز هستند و در این حالت، درستکاری کاملا درون اخلاقیات قرار می گیرد. برخی دیگر معتقدند که این دو دایره با هم تلاقی دارند و بدین ترتیب سه وضعیت پیش می آید: قوانین اخلاقی بدون ابعاد قضایی، قوانین قضایی بدون بعد اخلاقی و قسمت مشترک آن، قوانین اخلاقی که دارای بعد قضایی نیز هستند. برخی دیگر نیز این دو دایره را کاملا از هم مجزا می انگارند، ولی این نظریه به دلیل داشتن استثنائات زیاد قابل قبول نیست.
اخلاقیات و درستکاری هر کدام زمینههای مشخص خود را دارند، از هم جدا هستند ولی در عین حال نقاط تماسی با یکدیگر دارند، نه می توان در مورد جدایی آنها صحبت کرد، و نه می توان آنها را ممزوج دانست. اخلاقیات می تواند منحصر به یک (هر) فرد باشد و تنها در مورد او صدق کند، در حالی که درستکاری تنها در جامعه معنا پیدا می کند.
فرااخلاق
فرااخلاق یکی از شاخههای فلسفه اخلاق است که به فهم سرشت خواص، جملات، نگرش و قضاوت اخلاقی میپردازد. فرااخلاق یکی از سه شاخه اصلی فلسفه اخلاق است، دو شاخه دیگر، نظریه اخلاقی و اخلاق کاربردی هستند. نظریه اخلاقی و اخلاق کاربردی با هم اخلاق هنجاری را تشکیل میدهند.
درحالیکه اخلاق کاربردی و هنجاری روی اینکه چه چیزی اخلاقی است تمرکز میکنند، فرااخلاق بر محور خود چیستی اخلاق متمرکز است. اخلاق هنجاری سوالاتی از قبیل "باید چه کاری کرد؟" مطرح میکند و به این صورت برخی ارزیابیهای اخلاقی را قبول یا رد میکند. ولی فرااخلاق به سوالاتی چون "خوبی چیست؟" یا "چگونه میتوانیم بد را از خوب تمایز دهیم؟" میپردازد؛ به عبارت دیگر، فرااخلاق به دنبال درک طبیعت ویژگیهای اخلاقی و سرشت ارزیابیها است.
از این نظر فرااخلاق بررسی انتزاعیتر مفاهیم اخلاقی است. به باور برخی نظریهپردازان، شرح متافیزیک اخلاق برای ارزیابی نظریههای اخلاقی و تصمیمگیری عملی اخلاقی لازم است. دیگران، با فرض برعکس، پیشنهاد میکنند بایستی پیش از اینکه تصویر درستی از متافیزیک اخلاق ارائه دهیم ابتدا ایدههای درونی اخلاقی را به عمل اخلاقی مناسب تخصیص دهیم.
فلسفه اخلاق
فلسفه اخلاق شاخهای است از فلسفه که به استدلال درباره پرسشهای بنیادین اخلاقیات میپردازد. درستی و نادرستی امور، شناخت امور خیر و شر، و باز شناسی فضایل، مسائل بنیادین اخلاق را تشکیل میدهند. پرسش از این مسائل بنیادین منجر به شکلگیری دو حوزه نظری میشود: فرا اخلاق و اخلاق هنجاری؛ فلسفه اخلاق این دو حوزه را شامل میشود.
فلسفه اخلاق یکی از رویکردهای علم اخلاق است و بدون در نظر گرفتن نقش و اهمیت آن و پیش کشیدن سؤالاتی که این حوزه از فلسفه مطرح میکند نمیتوان فهم کاملی از اخلاق و اخلاقیات کسب کرد. نهایتاً فلسفه اخلاق در شرایط بحرانی یا فوری بیش از دیگر علوم انتزاعی به دادمان نخواهد رسید اما مطمئناً اصول و مسائل اخلاقی که توسط فلسفه اخلاق مورد بررسی قرار میگیرند میتوانند به صورت پیشینی بسیار از رخدادها را ممکن و یا غیر ممکن سازند. به این معنا که ساختار شکل گرفته اخلاقی پیرامون ما (به عنوان دستاورد اندیشه و فلسفه اخلاق)، رخ دادن امور را از صافی اخلاقیات حاکم رد میکند و در نتیجه شناخت این محیط اخلاقی به ما در تصمیم گیریهای موقعی مان کمک فراوان خواهد رساند.
تاریخچه
آدمیان در مرحلهای از تاریخ پدیداری خود رفته رفته برخی چیزها را ارزشمند تصور کردند. تفکر ابتدایی انسان به این صورت وارد مرحله مفهوم سازی شد و مفهوم سازی موجب پدیدار شدن مفهوم خوبی یا خیر در ذهن انسان گشت و این شروع تفکر اخلاقی انسان بود. وقتی کومونهای اولیه شکل گرفتند دو مفهوم عمده در ساختار اجتماعی شان مشهود بود؛ یکی از این مفاهیم، مفهوم عرف بود و دیگری مفهوم تابو. عرف مجموعه قواعدی بود که جامعه به صورت سنتی آن را پذیرفته بود و موجبات انتظام اجتماعی را فراهم میآورد؛ زمانی که جوامع به سوی متمدن شدن گام برداشتند و از حالت کومون درآمدند، به مرور مفهوم عرف نیز تبدیل به مفهوم قانون شد. تابو مجموعهای از رفتارها و گفتارهای ناهنجار اجتماعی بود که از سوی آیین و مذهب قوم ممنوع و نکوهیده بودند؛ مفهوم تابو نیز در سیر تطور جوامع مدنی، به مرور زمان به مفهوم اخلاقیات بدل گشت. پس از گذار از دوران کومونهای اولیه و شکل گیری نخستین جوامع مدنی تشریک مساعی رو به افزایش نهاد و تقسیم کار برآوردن نیازها را آسان کرد. این جریان موجب شد که خواستهها از نیازها پیشی بگیرند. بالیدن آرمانها، تکامل هوش بشری و نیز قابلیت تأمل درباره حیات و عالم موجب شد تا انسان ارزش گذاری نیازها و خواستههای خود را امری جدی و تا حدی حیاتی قلمداد کند. سرانجام آدمیان برای هر چیزی که در آن منفعتی احساس میکردند ارزش قائل میشدند و بدین طریق مفهوم خیر گسترش یافت.
همزمان با پیدایش و گسترش مفهوم خیر در جوامع انسانی مفهوم شر نیز به وجود آمد و گسترش یافت. انسانها بسته به نوع عملکردشان در چشم یکدیگر به خوب و بد تقسیم شدند. این جریان موجب آن شد که افراد بشر گرایش به شر را تقبیح کنند چرا که با وجود منفعت عمل شر برای فرد شرور، کلیت این عمل به ضرر تمام افراد جامعه تمام میشد و میتوانست بنیاد شهروندی را ریشه کن کند. در این راستا بود که معلمین اخلاق ظهور یافتند. آنچه تا کنون گفته شد بنا بر دیدگاه تکاملی در جامعه شناسی غربی است ولی بر خلاف این سیر تکاملی برای پیدایش مفهوم خیر و شر باید چنین گفت این مفهوم خیر و شر تنها در باب خیر و شر نوعی جریان دارد یعنی خیر و شری که به واسطه آن منافع اجتماعی حفظ یا منهدم می گردد در حالی که به بداهت عقلی مشخص است که برخی از اعمال و رفتار درای منافع و مضرات اجتماعی نیست ولی با این وجود عقل به شر بودن آن حکم می کند به عنوان نمونه فخر فروشی مضرت اجتماعی مستقیمی ندارد ولکن عقل به قبح آن حکم می کند همچنین شرور و موارد اخلاقی وجود دارند که عقل به آنها دسترسی ندارد چرا که عقل نظری مدرک کلیات است و عقل عملی نیز در قالب همان کلیات به مصداق یابی می پردازد با این تفاصیل نیاز به پیامبران از زمان کشف خیر و شر نوعی - اجتماعی نمی باشد بله از اغاز هستی انسان نیاز به پیامبران برای نشان دادن این شرور و خیر ها وجود دارد چرا که تنها پیامبران به منبع اصلی دانش یعنی خدا متصل هستند و به تمام جوانب نفس بشری و هستی احاط دارند و این کلام که اولین و مهمترین معلمین اخلاق پیامبران بودند. دین به مثابه برنامه و روش اخلاقی به واسطه عدهای افراد که خود را مرتبط با خداوند معرفی میکردند به مردمان ارائه شد. ان هم بعد از کشف این خیر ها و شر های اجتماعی کلامی است که با توجه به استدلال گذشته باطل است. البته اینکه پیامبران ابراهیمی مهمترین این افراد بودند. نیز جای بحث دارد چرا که دین در نزد خدا یکی است و در هر زمان به تناسب آن زمان فرامینی داده است تا دین خاتم که همان اسلام است همچنین گفته شده اولین فرامین اخلاقی مدون که انسان را مورد خطاب قرار داد فرامین دهگانه خداوند در سفر پیدایش و سفر تثنیه و نیز احکام دینی و اخلاقی یهود در سفر لاویان بود. که این نیز جای تامل است با توجه به انچه گفته شد از ضرورت وجود پیامبران از اغاز زمان زندگانی بشر و وجود پیامبران قبل از موسی بدون شک ده فرمان اولین فرمان اخلاقی خداوند نمی باشد چرا که در زمان نوح نیز خط موجود بوده است و مطلب دیگری که گفته شده آن است که: پس از نزول شریعت یهود باب نزول ادیان مختلف بر جوامع انسانی گشوده شد. مسیحیت و اسلام دو دین ابراهیمی دیگر بودند که هر یک با تفاوتهای کلی و جزیی به تبیین اصول اخلاقی پرداختند. به واقع در صدد آن است که این دو دین را وام دار یهودیت بداند اما این در جائی باعث اشکال است که ما ماهیت دین ها را متفاوت بدانیم اما در تفکر اسلام دین تنها نزد خدا یکی است و هر دین تکامل بخش دین دیگری است و این ادیان منافاتی با هم ندارند هرچند که در جریان تحریفات یهود و مسیح گذاره های اخلاقی در برخی از این دین ها تحریف شده است. در مورد آیینهای دینی غیر ابراهیمی نیز همزمان با این جریان شروع به گسترش کردند. از جمله اینان میتوان از ادیان زرتشتی و بودایی نام برد. در قرن پنجم پیش از میلاد مسیح و در سرزمین یونان معلم اخلاقی سر بر میآورد که فارغ از آموزههای دینی به تعلیم اخلاق میپرداخت. سقراط حلقه پیوند معلمین اخلاق با فلاسفه اخلاق بود.
افلاطون مکالمات فراوانی در باب فلسفه نوشت و در این آثار اشارات و بررسیهای ضمنی بسیاری درباره اخلاقیات کرد؛ اما فلسفه اخلاق راه خود را رسماً از زمان ارسطو آغاز کرد. نگارش اخلاق نیکوماخوس شروع تاریخ فلسفه اخلاق است. پس از ارسطو اپیکوریان و رواقیون سردمداران نگرش فلسفی به اخلاق بودند. پس از تحول بزرگ مسیحیت فلسفه اخلاق وارد مسیری جدید شد. آگوستین یکی از تأثیرگذارترین فلاسفه اخلاق بود و با آراء خود به تبیین موضوعات فلسفه اخلاق از منظر مسیحیت کاتولیک پرداخت. در دوران قرون وسطی فلسفه اخلاق رشد روزافزونی داشت اما تنها در مسیر اخلاقیات مسیحی پیش میرفت. اوج فلسفه اخلاق در قرون وسطی را میتوان در آراء توماس آکویناس مشاهده کرد. پس از دوران رنسانس اندک اندک آزادی اندیشه و بیان در جوامع اروپایی نهادینه شد و با وجود مشکلات به جا مانده از دوران تاریکی انقلاب فلسفی آغاز گشت. این انقلاب همان شروع دوران جدید است. دوران مذکور دوران شکوفایی علم و فلسفه بود. تمام فلاسفه بزرگ این دوران درباره اخلاق نظریات مهمی را مطرح ساختند اما قابل توجهترین این فلاسفه باروخ اسپینوزا است. پیش از دوران جدید تمامی فلاسفه به اخلاق رویکردی مبتنی بر فضیلت داشتند. انقلاب اسپینوزا در فلسفه اخلاق تغییر این رویکرد به اخلاق مبتنی بر کردار بود. تأثیر متفکران دوران جدید بر عصر روشنگری غیر قابل انکار است. در پایان دوران روشنگری بارزترین چهره فلسفه اخلاق طول تاریخ یعنی ایمانوئل کانت رخ مینماید. در حقیقت کانت مفهوم امروزی فلسفه اخلاق را ساخت. پس از کانتجان استوارت میل و آرتور شوپنهاور علم اخلاق را بیش از پیش متحول ساختند. در قرن بیستم نیز فلاسفه بزرگی در دو شاخه فلسفه تحلیلی و فلسفه قارهای آثار مهمی از خود بر جای گذاشتند.
مسائل
فلسفه اخلاق مانند هر شاخه دیگری از فلسفه، برای پاسخ دادن به سؤالات پیش رویش به تبیین و توضیح پاره ای مسائل می پردازد. این مسائل می توانند مخصوص اخلاق باشند و یا می توانند مسائلی باشند که هم در اخلاق و هم در علوم دیگر مورد بررسی است. اصولاً فلسفه اخلاق رابطه نزدیکی با فلسفه سیاسی، فلسفه حقوق، جامعه شناسی و روان شناسی دارد؛ در نتیجه بعضی از مسائل فلسفه اخلاق مسائل حوزههای مذکور نیز هستند.
خیر و شر
مبنای اخلاقیات بر این عقیده استوار است که آن چه برای انسانهای (و یا حتی حیوانات) به خصوصی خوب یا بد است، نه فقط از دیدگاه آنان، بلکه از دیدگاه فراگیرتری خوب یا بد می باشد.
حکم کردن به این که چه چیزی فی نفسه خوب است به این معناست که آن چیز ارزشمند است. ذهن انسان با عمل ارزش گذاری امور خیر و شر را پدید می آورد و در نتیجه به تقبیح و تحسین این امور می پردازد. نمی توان به طور قطع گفت که ارزش گذاریهای این چنینی اصولاً قراردادی هستند و یا به صورت غریزی موجودند. با این حال، وجود این دو مفهوم در تاریخ تفکر بشری غیر قابل انکار است. وجود این مفاهیم در ذهن انسان موجب شده است تا نظریات مختلف اخلاقی خیر و شر را به طرق گوناگون تعبیر کند. برخی خیر را، خیر فرد می دانند؛ عده ای معتقدند که خیر همان خیر جمعی است و دیگرانی معتقدند که مفهوم خیر نسبت به موقعیت تاریخی و فرهنگی یک جامعه تعریف می شود. با وجود این عدم توافق، یک مفهوم در فلسفه اخلاق از اهمیت کلیدی برخوردار است و آن مفهوم خیر اعلی است. خیر اعلی یعنی بالاترین شکل خیر که انسان می تواند با حرکت به سوی آن اخلاقی تر عمل کند.
خیر می تواند به واسطه روابط علّی، هنجاری و مفهومی با درستی در ارتباط باشد. با این حال امکان عدم رابطه میان این دو مفهوم نیز وجود دارد. تبیین روابط خیر و درستی نیز در نظریات مختلف به اشکال مختلف بیان شده است.
درست و نادرست
هرچند که نمی توان به قطعیت گفت هر آنچه درست است خوب نیز هست اما به نظر می رسد که به لحاظ ارزشی این دو با هم تساوی دارند. یعنی ارزش درستی با ارزش خوبی برابری میکند با این تفاوت که خوبی مفهوم بسیار نسبی تر و شناورتری از درستی دارد. درستی و نادرستی امور با آثار عمل بر روی فرد انجام دهنده و دیگران در معرض عمل سر و کار دارد. فرد با ارتکاب عمل درست و یا نادرست در وهله اول خود را در موقعیت اخلاقی قرار داده و با این فضا سنجیده می شود. در مرحله بعدی آثار عمل فرد می تواند بر احساسات دیگران کارگر افتد و همین طور می تواند سود و زیان مادی به دیگران وارد کند. در نتیجه در اطلاق ارزش درست یا نادرست برای یک امر باید به تأثیرات آن امر بر فرد عامل و نیز تأثیرات آن بر دیگران توجه کرد.
برخی اوقات مفهوم «درست و نادرست» با مفهوم «مخالف و موافق قانون» اشتباه گرفته می شود. این دو مفهوم کاملاً از هم متفاوتند؛ ممکن است قوانینی وجود داشته باشد که چیزی که ندرست نیست را ممنوع سازد و یا امری نادرست را الزام کند. وقتی ما قادریم ساختارهایی مثل آن چه گفته شد را در ذهن خود بسازیم و بفهمیم معلوم میشود که ایدههای درستی متفاوت از ایدههای قانونی هستند. زیرا ما به واسطه ایدههای درستی می توانیم قوانین را نیز مورد ارزیابی قرار دهیم.
عده ای از متفکران فلسفه اخلاق معتقدند که درستی و نادرستی امری نسبی است. اینان استناد می کنند بر تأثیر زمان و مکان بر درستی و نادرستی امور و یا بستگی درستی امور به شرایط. اما این استنتاج غلط است؛ گزارههای مذکور به معنای نسبی بودن بنیان اخلاقیات نیست بلکه به این معناست که اصول بنیادین اخلاق در شرایط مختلف اعمال متفاوتی را ایجاب می کند. یعنی ما بنیاد محکمی برای اخلاق داریم که بر آن ساختمانی نسبی ساخته شده است.
یکی از اولین کتابهایی که مستقلاً به علم اخلاق پرداخته است کتاب اخلاق نیکوماخوس اثر ارسطو است.
ارتباط اخلاق با علوم دیگر
جایگاه اخلاق در نقشهٔ علم، در انتهاست
دسته بندی علوم توسّط خواجه نصیر الدین طوسی در آغاز کتاب اخلاق ناصری، جایگاه علم اخلاق را در بین سایر علوم چنین آورده:
علومی که به شناخت موجودات میپردازند
نظری: وجود موضوع آنها وابسته به حرکت ارادی انسان است.
ما بعد الطبیعه: موضوعشان مجرد از ماده
ریاضی
۴ قسم
طبیعی
۸ قسم
عملی: وجود موضوع آنها مستقل از حرکت ارادی انسان است «این علوم دانش به مصالح حرکات ارادی و افعال صناعی انسان هستند، به گونهای که احوال آنها را سازمان دهند و آنان را به کمال شایسته شان برساند.»
تهذیب اخلاق: در مورد امور فردی بحث میکند
تدبیر منزل: مربوط به گروه کوچکی که
سیاست مدن: مربوط به جمعی است که در شهر، مملکت و مانند آن زندگی میکنند
وابستگی
علم اخلاق مبادی اش را از علوم منطق، مابعدالطّبیعه(یعنی فلسفه) برای مبادی هستی شناختی، و علمالنّفس(انسان شناسی) و روانشناسی میگیرد. شاخهای از اخلاق که عهده دار تامین مبادی اخلاق است فرا اخلاق نام دارد. لذا فرا اخلاق یک علم درجه دوم است. یعنی چون بر اساس علم منطق علوم را باید بر حسب موضوع شان و نه محمول شان دسته بندی نمود؛ و موضوع فرااخلاق در علوم دیگر است؛ فرا اخلاق یک علم یا شاخهای از آن نیست.
پیش درآمدی
علم اخلاق در فراهم آوردن مبادی علم حقوق و سیاست و تدبیر مُدُن نقش دارد. ارسطو، کتاب اخلاق نیکوماخوس اش را به عنوان مقدّمهای برای کتاب سیاست مُدُنش نوشته
علم اخلاق بعضی از مبادی دو علم تدبیر منزل و سیاست مدن را نیز تأمین میکند.
شاخههای اخلاق
اخلاق به سه شاخهٔ کاملاً مجزا تقسیم میشود∗:
فلسفه اخلاق که شاخهای از فلسفه∗ است و وظیفهٔ آن پاسخ به پرسش هایی از این قبیل بعنوان پایهٔ اخلاق نظری ست:
خوب و بد یعنی چه؟
ماهیت و حقیقت∗ مفاهیم اخلاقی چیست؟
قضایا∗ی اخلاق اخباری اند یا انشایی∗؟
مسائل اخلاقی جهانی و جاودانه (مطلق) اند، یا سرزمینی و موقّت (نسبی)؟
معیار کلی خوبی و بدی یک صفت یا رفتار اخلاقی چیست؟
شرایط و حوزههای مسئولیت اخلاقی چیست؟
اخلاق نظری که وظیفهٔ آن مطالعهٔ صفات و اعمال اخلاقی و پاسخ به انتظاراتی است از قبیل:
شناسایی، دسته بندی و تعریف صفات و اعمال اخلاقی در حوزهٔ عمومی
شناخت ریشهها و پیامدهای آنها
قضاوت در مورد خوبی یا بدی صفات کلان (صفاتی که محدود به حوزهٔ خاصی از زندگی نیستند). این قسمت از اخلاق یک فن یا روش یا قانون یا باید و نباید است، نه یک علم. یعنی مربوط به آنچه باید، نه آنچه هست.
شناسایی حوزههای خاص اخلاق∗.
دادن قدرت استدلال در مورد خوبی یا بدی اعمال و صفات اخلاقی در حوزههای خاص به آموزنده.
اخلاق عملی یا تربیت اخلاقی∗ فنی ست برای رسیدن از وضعیت مطلوب ناموجود به وضعیّت موجود مطلوب در اخلاق. از این نظر اخلاق اساس معنویت است؛ و انسانی که اخلاقی تر است، معنوی تر نیز هست∗. همچنین این قسم از اخلاق یک فن است. از مهمترین مسائل مطرح در این حوزه میتوان به موارد زیر اشاره کرد:
شناخت و استفاده از مبادی رفتار
مبادی رفتار از نظر علمای پیشین از این قرار است: تصور + تصدیق∗ به فایده + شوق موءکد.
روان شناسان معصر ترکیب مشابه دیگری را پیش رو نهادهاند: شناخت + انگیزش + توان عملی.
روش ایجاد و از بین بردن صفات اخلاقی
اخلاق در اسلام
مبانی مورد قبول علماء علم اخلاق در قدیم سه رکن بوده است و در عصر جدید هم گرچه فروعاتی بر آن افزوده شده است و توسعه یافته است اما می توان گفت ارکان آن در سه مورد خلاصه می شود نخست تهذیب نفس، تدبیر منزل و سیاست مُدُن که علماء اخلاق عناوین سه گانه فوق را به صورت زیر تجزیه و تقسیم نموده اند قسم اول را تخلیه، تحلیه و تجلیه دانسته اند و قسم دوم را گفته اند مراد علم معاش و معاشرت با همسر و فرزندان است و سوم مربوط به حفظ و حراست از کشور است.
توضیحات
^ علوم انسانی دستهای از علوم دانشگاهی اند که در آنها با روشهای عموماً تحلیلی، انتقادی و تفکری-تعمقی امور انسانی را مطالعه میکنند. این روشها معمولاً در تقابل با روشهای تجربی در علوم پایه و علوم اجتماعی قرار میگیرند. (ویکیپدیا)
^ که به هیچ وجه محدود به زبان فارسی و فرهنگ اسلامی نیست.
^ در روانشناسی در مورد معنای آن بحث میشود.
^ برای مطالعه در مورد عادت و شرطیسازی و یادگیری به کتاب روانشناسی عمومی، دکتر حمزه گنجی یا منابع مشابه رجوع فرمایید.
^ این شاخهها با هم اشتباه گرفته نمیشوند. اما از سویی در بسیاری از منابع قدیم اخلاق، علم اخلاق صرفاً به دومی و سومی اطلاق میشود (مانند معراج السّعاده)؛ و از سویی هم در متون غربی جدید از اخلاق صرفاً به عنوان شاخهای از فلسفه یاد میشود و قسمت دوم و سوم نیز گاه جزو آن میآید.
^ فلسفه مطالعهٔ مسائل کلی و اساسی پیرامون موضوعاتی چون وجود، آگاهی، حقیقت، عدالت، زیبایی، اعتبار، ذهن و زبان است. وجه افتراق فلسفه با راههای دیگر پرداختن به این پرسشها (راههایی نظیر عرفان و اسطوره) رویکرد نقّادانه و معمولاً سامانمند فلسفه و تکیهاش بر استدلالهای عقلانیاست. (ویکیپدیا)
^ اصطلاح فلسفی. رجوع شود به آشنایی با علوم اسلامی، جلد 1، اثر شهید مطهّری
^ اصطلاحی در علم منطق. رجوع شود به منطق کاربردی، اثر علی اصغر خندان
^ دو نوع جمله در علم زبان شناسی
^ مدرّسان گاه این قسمت را اخلاق کاربردی می خوانند. اما این نامی برای اخلاق اختصاصی نیست.
^ عرفان عملی مساوی اخلاق عملی نیست، بلکه صرفاً بهترین فن تربیت اخلاقی، آن هم در محدودهٔ اخلاق اسلامی ست. نه در قلمرو کلّی اخلاق.
^ به طور مشابه، در صنعت تولید دقّت اندازه ملاک کیفیت است. محصولی بهتر است، که در طی فرایند تولید، در ابعادی هر چه دقیق تر ساخته شده باشد.
^ تصوّر و تصدیق دو اصطلاح در علم منطق اند. رجوع شود به منطق کاربردی، اثر علی اصغر خندان
درستکاری
اخلاقیات می تواند فردی باشد، در این حالت شامل یک باید شخصی است، شخص خود تصمیم گیرنده و وضع کننده قانونی است که او را به انجام یا عدم انجام فعلی ملزم می کند. در این حالت هدف اخلاقیات و درستکاری، پیشبرد و بهبود وضعیت زندگی در جامعه است.
تئوریهای مختلفی در مورد رابطه بین اخلاقیات و درستکاری وجود دارد. تحلیلگران از دو دایره برای نشان دادن رابطه این دو مقوله استفاده می کنند. برای بعضی از آنها، این دو دایره هم مرکز هستند و در این حالت، درستکاری کاملا درون اخلاقیات قرار می گیرد. برخی دیگر معتقدند که این دو دایره با هم تلاقی دارند و بدین ترتیب سه وضعیت پیش می آید: قوانین اخلاقی بدون ابعاد قضایی، قوانین قضایی بدون بعد اخلاقی و قسمت مشترک آن، قوانین اخلاقی که دارای بعد قضایی نیز هستند. برخی دیگر نیز این دو دایره را کاملا از هم مجزا می انگارند، ولی این نظریه به دلیل داشتن استثنائات زیاد قابل قبول نیست.
اخلاقیات و درستکاری هر کدام زمینههای مشخص خود را دارند، از هم جدا هستند ولی در عین حال نقاط تماسی با یکدیگر دارند، نه می توان در مورد جدایی آنها صحبت کرد، و نه می توان آنها را ممزوج دانست. اخلاقیات می تواند منحصر به یک (هر) فرد باشد و تنها در مورد او صدق کند، در حالی که درستکاری تنها در جامعه معنا پیدا می کند.
فرااخلاق
فرااخلاق یکی از شاخههای فلسفه اخلاق است که به فهم سرشت خواص، جملات، نگرش و قضاوت اخلاقی میپردازد. فرااخلاق یکی از سه شاخه اصلی فلسفه اخلاق است، دو شاخه دیگر، نظریه اخلاقی و اخلاق کاربردی هستند. نظریه اخلاقی و اخلاق کاربردی با هم اخلاق هنجاری را تشکیل میدهند.
درحالیکه اخلاق کاربردی و هنجاری روی اینکه چه چیزی اخلاقی است تمرکز میکنند، فرااخلاق بر محور خود چیستی اخلاق متمرکز است. اخلاق هنجاری سوالاتی از قبیل "باید چه کاری کرد؟" مطرح میکند و به این صورت برخی ارزیابیهای اخلاقی را قبول یا رد میکند. ولی فرااخلاق به سوالاتی چون "خوبی چیست؟" یا "چگونه میتوانیم بد را از خوب تمایز دهیم؟" میپردازد؛ به عبارت دیگر، فرااخلاق به دنبال درک طبیعت ویژگیهای اخلاقی و سرشت ارزیابیها است.
از این نظر فرااخلاق بررسی انتزاعیتر مفاهیم اخلاقی است. به باور برخی نظریهپردازان، شرح متافیزیک اخلاق برای ارزیابی نظریههای اخلاقی و تصمیمگیری عملی اخلاقی لازم است. دیگران، با فرض برعکس، پیشنهاد میکنند بایستی پیش از اینکه تصویر درستی از متافیزیک اخلاق ارائه دهیم ابتدا ایدههای درونی اخلاقی را به عمل اخلاقی مناسب تخصیص دهیم.
فلسفه اخلاق
فلسفه اخلاق شاخهای است از فلسفه که به استدلال درباره پرسشهای بنیادین اخلاقیات میپردازد. درستی و نادرستی امور، شناخت امور خیر و شر، و باز شناسی فضایل، مسائل بنیادین اخلاق را تشکیل میدهند. پرسش از این مسائل بنیادین منجر به شکلگیری دو حوزه نظری میشود: فرا اخلاق و اخلاق هنجاری؛ فلسفه اخلاق این دو حوزه را شامل میشود.
فلسفه اخلاق یکی از رویکردهای علم اخلاق است و بدون در نظر گرفتن نقش و اهمیت آن و پیش کشیدن سؤالاتی که این حوزه از فلسفه مطرح میکند نمیتوان فهم کاملی از اخلاق و اخلاقیات کسب کرد. نهایتاً فلسفه اخلاق در شرایط بحرانی یا فوری بیش از دیگر علوم انتزاعی به دادمان نخواهد رسید اما مطمئناً اصول و مسائل اخلاقی که توسط فلسفه اخلاق مورد بررسی قرار میگیرند میتوانند به صورت پیشینی بسیار از رخدادها را ممکن و یا غیر ممکن سازند. به این معنا که ساختار شکل گرفته اخلاقی پیرامون ما (به عنوان دستاورد اندیشه و فلسفه اخلاق)، رخ دادن امور را از صافی اخلاقیات حاکم رد میکند و در نتیجه شناخت این محیط اخلاقی به ما در تصمیم گیریهای موقعی مان کمک فراوان خواهد رساند.
تاریخچه
آدمیان در مرحلهای از تاریخ پدیداری خود رفته رفته برخی چیزها را ارزشمند تصور کردند. تفکر ابتدایی انسان به این صورت وارد مرحله مفهوم سازی شد و مفهوم سازی موجب پدیدار شدن مفهوم خوبی یا خیر در ذهن انسان گشت و این شروع تفکر اخلاقی انسان بود. وقتی کومونهای اولیه شکل گرفتند دو مفهوم عمده در ساختار اجتماعی شان مشهود بود؛ یکی از این مفاهیم، مفهوم عرف بود و دیگری مفهوم تابو. عرف مجموعه قواعدی بود که جامعه به صورت سنتی آن را پذیرفته بود و موجبات انتظام اجتماعی را فراهم میآورد؛ زمانی که جوامع به سوی متمدن شدن گام برداشتند و از حالت کومون درآمدند، به مرور مفهوم عرف نیز تبدیل به مفهوم قانون شد. تابو مجموعهای از رفتارها و گفتارهای ناهنجار اجتماعی بود که از سوی آیین و مذهب قوم ممنوع و نکوهیده بودند؛ مفهوم تابو نیز در سیر تطور جوامع مدنی، به مرور زمان به مفهوم اخلاقیات بدل گشت. پس از گذار از دوران کومونهای اولیه و شکل گیری نخستین جوامع مدنی تشریک مساعی رو به افزایش نهاد و تقسیم کار برآوردن نیازها را آسان کرد. این جریان موجب شد که خواستهها از نیازها پیشی بگیرند. بالیدن آرمانها، تکامل هوش بشری و نیز قابلیت تأمل درباره حیات و عالم موجب شد تا انسان ارزش گذاری نیازها و خواستههای خود را امری جدی و تا حدی حیاتی قلمداد کند. سرانجام آدمیان برای هر چیزی که در آن منفعتی احساس میکردند ارزش قائل میشدند و بدین طریق مفهوم خیر گسترش یافت.
همزمان با پیدایش و گسترش مفهوم خیر در جوامع انسانی مفهوم شر نیز به وجود آمد و گسترش یافت. انسانها بسته به نوع عملکردشان در چشم یکدیگر به خوب و بد تقسیم شدند. این جریان موجب آن شد که افراد بشر گرایش به شر را تقبیح کنند چرا که با وجود منفعت عمل شر برای فرد شرور، کلیت این عمل به ضرر تمام افراد جامعه تمام میشد و میتوانست بنیاد شهروندی را ریشه کن کند. در این راستا بود که معلمین اخلاق ظهور یافتند. آنچه تا کنون گفته شد بنا بر دیدگاه تکاملی در جامعه شناسی غربی است ولی بر خلاف این سیر تکاملی برای پیدایش مفهوم خیر و شر باید چنین گفت این مفهوم خیر و شر تنها در باب خیر و شر نوعی جریان دارد یعنی خیر و شری که به واسطه آن منافع اجتماعی حفظ یا منهدم می گردد در حالی که به بداهت عقلی مشخص است که برخی از اعمال و رفتار درای منافع و مضرات اجتماعی نیست ولی با این وجود عقل به شر بودن آن حکم می کند به عنوان نمونه فخر فروشی مضرت اجتماعی مستقیمی ندارد ولکن عقل به قبح آن حکم می کند همچنین شرور و موارد اخلاقی وجود دارند که عقل به آنها دسترسی ندارد چرا که عقل نظری مدرک کلیات است و عقل عملی نیز در قالب همان کلیات به مصداق یابی می پردازد با این تفاصیل نیاز به پیامبران از زمان کشف خیر و شر نوعی - اجتماعی نمی باشد بله از اغاز هستی انسان نیاز به پیامبران برای نشان دادن این شرور و خیر ها وجود دارد چرا که تنها پیامبران به منبع اصلی دانش یعنی خدا متصل هستند و به تمام جوانب نفس بشری و هستی احاط دارند و این کلام که اولین و مهمترین معلمین اخلاق پیامبران بودند. دین به مثابه برنامه و روش اخلاقی به واسطه عدهای افراد که خود را مرتبط با خداوند معرفی میکردند به مردمان ارائه شد. ان هم بعد از کشف این خیر ها و شر های اجتماعی کلامی است که با توجه به استدلال گذشته باطل است. البته اینکه پیامبران ابراهیمی مهمترین این افراد بودند. نیز جای بحث دارد چرا که دین در نزد خدا یکی است و در هر زمان به تناسب آن زمان فرامینی داده است تا دین خاتم که همان اسلام است همچنین گفته شده اولین فرامین اخلاقی مدون که انسان را مورد خطاب قرار داد فرامین دهگانه خداوند در سفر پیدایش و سفر تثنیه و نیز احکام دینی و اخلاقی یهود در سفر لاویان بود. که این نیز جای تامل است با توجه به انچه گفته شد از ضرورت وجود پیامبران از اغاز زمان زندگانی بشر و وجود پیامبران قبل از موسی بدون شک ده فرمان اولین فرمان اخلاقی خداوند نمی باشد چرا که در زمان نوح نیز خط موجود بوده است و مطلب دیگری که گفته شده آن است که: پس از نزول شریعت یهود باب نزول ادیان مختلف بر جوامع انسانی گشوده شد. مسیحیت و اسلام دو دین ابراهیمی دیگر بودند که هر یک با تفاوتهای کلی و جزیی به تبیین اصول اخلاقی پرداختند. به واقع در صدد آن است که این دو دین را وام دار یهودیت بداند اما این در جائی باعث اشکال است که ما ماهیت دین ها را متفاوت بدانیم اما در تفکر اسلام دین تنها نزد خدا یکی است و هر دین تکامل بخش دین دیگری است و این ادیان منافاتی با هم ندارند هرچند که در جریان تحریفات یهود و مسیح گذاره های اخلاقی در برخی از این دین ها تحریف شده است. در مورد آیینهای دینی غیر ابراهیمی نیز همزمان با این جریان شروع به گسترش کردند. از جمله اینان میتوان از ادیان زرتشتی و بودایی نام برد. در قرن پنجم پیش از میلاد مسیح و در سرزمین یونان معلم اخلاقی سر بر میآورد که فارغ از آموزههای دینی به تعلیم اخلاق میپرداخت. سقراط حلقه پیوند معلمین اخلاق با فلاسفه اخلاق بود.
افلاطون مکالمات فراوانی در باب فلسفه نوشت و در این آثار اشارات و بررسیهای ضمنی بسیاری درباره اخلاقیات کرد؛ اما فلسفه اخلاق راه خود را رسماً از زمان ارسطو آغاز کرد. نگارش اخلاق نیکوماخوس شروع تاریخ فلسفه اخلاق است. پس از ارسطو اپیکوریان و رواقیون سردمداران نگرش فلسفی به اخلاق بودند. پس از تحول بزرگ مسیحیت فلسفه اخلاق وارد مسیری جدید شد. آگوستین یکی از تأثیرگذارترین فلاسفه اخلاق بود و با آراء خود به تبیین موضوعات فلسفه اخلاق از منظر مسیحیت کاتولیک پرداخت. در دوران قرون وسطی فلسفه اخلاق رشد روزافزونی داشت اما تنها در مسیر اخلاقیات مسیحی پیش میرفت. اوج فلسفه اخلاق در قرون وسطی را میتوان در آراء توماس آکویناس مشاهده کرد. پس از دوران رنسانس اندک اندک آزادی اندیشه و بیان در جوامع اروپایی نهادینه شد و با وجود مشکلات به جا مانده از دوران تاریکی انقلاب فلسفی آغاز گشت. این انقلاب همان شروع دوران جدید است. دوران مذکور دوران شکوفایی علم و فلسفه بود. تمام فلاسفه بزرگ این دوران درباره اخلاق نظریات مهمی را مطرح ساختند اما قابل توجهترین این فلاسفه باروخ اسپینوزا است. پیش از دوران جدید تمامی فلاسفه به اخلاق رویکردی مبتنی بر فضیلت داشتند. انقلاب اسپینوزا در فلسفه اخلاق تغییر این رویکرد به اخلاق مبتنی بر کردار بود. تأثیر متفکران دوران جدید بر عصر روشنگری غیر قابل انکار است. در پایان دوران روشنگری بارزترین چهره فلسفه اخلاق طول تاریخ یعنی ایمانوئل کانت رخ مینماید. در حقیقت کانت مفهوم امروزی فلسفه اخلاق را ساخت. پس از کانتجان استوارت میل و آرتور شوپنهاور علم اخلاق را بیش از پیش متحول ساختند. در قرن بیستم نیز فلاسفه بزرگی در دو شاخه فلسفه تحلیلی و فلسفه قارهای آثار مهمی از خود بر جای گذاشتند.
مسائل
فلسفه اخلاق مانند هر شاخه دیگری از فلسفه، برای پاسخ دادن به سؤالات پیش رویش به تبیین و توضیح پاره ای مسائل می پردازد. این مسائل می توانند مخصوص اخلاق باشند و یا می توانند مسائلی باشند که هم در اخلاق و هم در علوم دیگر مورد بررسی است. اصولاً فلسفه اخلاق رابطه نزدیکی با فلسفه سیاسی، فلسفه حقوق، جامعه شناسی و روان شناسی دارد؛ در نتیجه بعضی از مسائل فلسفه اخلاق مسائل حوزههای مذکور نیز هستند.
خیر و شر
مبنای اخلاقیات بر این عقیده استوار است که آن چه برای انسانهای (و یا حتی حیوانات) به خصوصی خوب یا بد است، نه فقط از دیدگاه آنان، بلکه از دیدگاه فراگیرتری خوب یا بد می باشد.
حکم کردن به این که چه چیزی فی نفسه خوب است به این معناست که آن چیز ارزشمند است. ذهن انسان با عمل ارزش گذاری امور خیر و شر را پدید می آورد و در نتیجه به تقبیح و تحسین این امور می پردازد. نمی توان به طور قطع گفت که ارزش گذاریهای این چنینی اصولاً قراردادی هستند و یا به صورت غریزی موجودند. با این حال، وجود این دو مفهوم در تاریخ تفکر بشری غیر قابل انکار است. وجود این مفاهیم در ذهن انسان موجب شده است تا نظریات مختلف اخلاقی خیر و شر را به طرق گوناگون تعبیر کند. برخی خیر را، خیر فرد می دانند؛ عده ای معتقدند که خیر همان خیر جمعی است و دیگرانی معتقدند که مفهوم خیر نسبت به موقعیت تاریخی و فرهنگی یک جامعه تعریف می شود. با وجود این عدم توافق، یک مفهوم در فلسفه اخلاق از اهمیت کلیدی برخوردار است و آن مفهوم خیر اعلی است. خیر اعلی یعنی بالاترین شکل خیر که انسان می تواند با حرکت به سوی آن اخلاقی تر عمل کند.
خیر می تواند به واسطه روابط علّی، هنجاری و مفهومی با درستی در ارتباط باشد. با این حال امکان عدم رابطه میان این دو مفهوم نیز وجود دارد. تبیین روابط خیر و درستی نیز در نظریات مختلف به اشکال مختلف بیان شده است.
درست و نادرست
هرچند که نمی توان به قطعیت گفت هر آنچه درست است خوب نیز هست اما به نظر می رسد که به لحاظ ارزشی این دو با هم تساوی دارند. یعنی ارزش درستی با ارزش خوبی برابری میکند با این تفاوت که خوبی مفهوم بسیار نسبی تر و شناورتری از درستی دارد. درستی و نادرستی امور با آثار عمل بر روی فرد انجام دهنده و دیگران در معرض عمل سر و کار دارد. فرد با ارتکاب عمل درست و یا نادرست در وهله اول خود را در موقعیت اخلاقی قرار داده و با این فضا سنجیده می شود. در مرحله بعدی آثار عمل فرد می تواند بر احساسات دیگران کارگر افتد و همین طور می تواند سود و زیان مادی به دیگران وارد کند. در نتیجه در اطلاق ارزش درست یا نادرست برای یک امر باید به تأثیرات آن امر بر فرد عامل و نیز تأثیرات آن بر دیگران توجه کرد.
برخی اوقات مفهوم «درست و نادرست» با مفهوم «مخالف و موافق قانون» اشتباه گرفته می شود. این دو مفهوم کاملاً از هم متفاوتند؛ ممکن است قوانینی وجود داشته باشد که چیزی که ندرست نیست را ممنوع سازد و یا امری نادرست را الزام کند. وقتی ما قادریم ساختارهایی مثل آن چه گفته شد را در ذهن خود بسازیم و بفهمیم معلوم میشود که ایدههای درستی متفاوت از ایدههای قانونی هستند. زیرا ما به واسطه ایدههای درستی می توانیم قوانین را نیز مورد ارزیابی قرار دهیم.
عده ای از متفکران فلسفه اخلاق معتقدند که درستی و نادرستی امری نسبی است. اینان استناد می کنند بر تأثیر زمان و مکان بر درستی و نادرستی امور و یا بستگی درستی امور به شرایط. اما این استنتاج غلط است؛ گزارههای مذکور به معنای نسبی بودن بنیان اخلاقیات نیست بلکه به این معناست که اصول بنیادین اخلاق در شرایط مختلف اعمال متفاوتی را ایجاب می کند. یعنی ما بنیاد محکمی برای اخلاق داریم که بر آن ساختمانی نسبی ساخته شده است.
خط مشی جاوا
یکی از ویژگیهای جاوا قابل حمل بودن آن است. یعنی برنامهٔ نوشته شده به زبان جاوا باید به طور مشابهی در کامپیوترهای مختلف با سختافزارهای متفاوت اجرا شود. و باید این توانایی را داشته باشد که برنامه یک بار نوشته شود، یک بار کامپایل شود و در همه کامپیوترها اجرا گردد. به این صورت که کد کامپایل شدهٔ جاوا را ذخیره میکند، اما نه بهصورت کد ماشین بلکه بهصورت بایتکد جاوا. دستورالعملها شبیه کد ماشین هستند، اما با ماشینهای مجازی که به طور خاص برای سختافزارهای مختلف نوشته شدهاند، اجرا میشوند. در نهایت کاربر از سکوی جاوا نصب شده روی ماشین خود یا مرورگر وب استفاده میکند. کتابخانههای استاندارد یک راه عمومی برای دسترسی به ویژگیهای خاص فراهم میکنند. مانند گرافیک، نخکشی و شبکه. در بعضی از نسخههای ماشین مجازی جاوا، بایتکدها میتوانند قبل و در زمان اجرای برنامه به کدهای محلی کامپایل شوند. فایدهٔ اصلی استفاده از بایتکد، قسمت کردن است. اما ترجمهٔ کلی یعنی برنامههای ترجمه شده تقریباً همیشه کندتر از برنامههای کامپایل شدهٔ محلی اجرا میشوند. این شکاف میتواند با چند تکنیک خوشبینانه که در کاربردهای JVM قبلی معرفی شد، کم شود. یکی از این تکنیکها JIT است که بایتکد جاوا را به کد محلی ترجمه کرده و سپس آن را پنهان میکند. در نتیجه برنامه خیلی سریعتر نسبت به کدهای ترجمه شدهٔ خالص شروع و اجرا میشود. بیشتر VMهای پیشرفته، بهصورت کامپایل مجدد پویا، در آنالیز VM، رفتار برنامهٔ اجرا شده و کامپایل مجدد انتخاب شده و بهینهسازی قسمتهای برنامه، استفاده میشوند. کامپایل مجدد پویا میتواند کامپایل ایستا را بهینهسازی کند. زیرا میتواند قسمت hot spot برنامه و گاهی حلقههای داخلی که ممکن است زمان اجرای برنامه را افزایش دهند را تشخیص دهد. کامپایل JIT و کامپایل مجدد پویا به برنامههای جاوا اجازه میدهد که سرعت اجرای کدهای محلی بدون از دست دادن قابلیت انتقال افزایش پیدا کند.
تکنیک بعدی به عنوان کامپایل ایستا شناخته شدهاست. که کامپایل مستقیم به کدهای محلی است مانند بسیاری از کامپایلرهای قدیمی. کامپایلر ایستای جاوا، بایتکدها را به کدهای شی محلی ترجمه میکند.
کارایی جاوا نسبت به نسخههای اولیه بیشتر شد. در تعدادی از تستها نشان داده شد که کارایی کامپایلرJIT کاملاًَ مشابه کامپایلر محلی شد. عملکرد کامپایلرها لزوماً کارایی کدهای کامپایل شده را نشان نمیدهند. یکی از پیشرفتهای بی نظیر در در زمان اجرای ماشین این بود که خطاها ماشین را دچار اشکال نمیکردند. علاوه بر این در زمان اجرای ماشینی مانند جاوا وسایلی وجود دارد که به زمان اجرای ماشین متصل شده و هر زمانی که یک استثنا رخ میدهد، اطلاعات اشکال زدایی که در حافظه وجود دارد، ثبت میکنند.
پیادهسازی
شرکت سان میکروسیستم مجوز رسمی برای پلت فرم استاندارد جاوا را به مایکروسافت ویندوز, لینوکس، و سولاریس (سیستمعامل). دادهاست. همچنین محیطهای دیگری برای دیگر پلت فرمها فراهم آوردهاست. علامت تجاری مجوز شرکت سان میکروسیستم طوری بود که با همهٔ پیادهسازیها سازگار باشد. به علت اختلاف قانونی که با ماکروسافت پیدا کرد، زمانی که شرکت سان ادعا کرد که پیادهسازی ماکروسافت از RMI یا JNI پشتیبانی نکرده و ویژگیهای خاصی را برای خودش اضافه کردهاست. شرکت سان در سال ۱۹۹۷ پیگیری قانونی کرد و در سال ۲۰۰۱ در توافقی ۲۰ میلیون دلاری برنده شد. در نتیجه کمی بعدماکروسافت جاوا را به ویندوز فرستاد. در نسخهٔ اخیر ویندوز، مرورگر اینترنت نمیتواند از جاوا پلت فرم پشتیبانی کند. شرکت سان و دیگران یک سیستم اجرای جاوای رایگان برای آنها و نسخههای دیگر ویندوز فراهم آوردند.
اداره خودکار حافظه
جاوا از حافظهٔ بازیافتی خودکار برای ادارهٔ حافظه در چرخهٔ زندگی یک شی استفاده میکند. برنامهنویس زمانی که اشیا به وجود میآیند، این حافظه را تعیین میکند. و در زمان اجرا نیز، زمانی که این اشیا در استفادهٔ زیاد طولانی نباشند، برنامه نویس مسئول بازگرداندن این حافظهاست. زمانی که مرجعی برای شیهای باقیمانده نیست، شیهای غیر قابل دسترس برای آزاد شدن به صورت خودکار توسط بازیافت حافظه، انتخاب میشوند. اگر برنامهنویس مقداری از حافظه را برای شیهایی که زیاد طولانی نیستند، نگه دارد، چیزهایی شبیه سوراخ حافظه اتفاق میافتند.
یکی از عقایدی که پشت سر مدل ادارهٔ حافظهٔ خودکار جاوا وجود دارد، این است که برنامهنویس هزینهٔ اجرای ادارهٔ دستی حافظه را نادیده میگیرد. در بعضی از زبانها حافظه لازم برای ایجاد یک شی، به صورت ضمنی و بدون شرط، به پشته تخصیص داده میشود. و یا بهطور صریح اختصاص داده شده و از heap بازگردانده میشود. در هر کدام از این راهها، مسئولیت ادارهٔ اقامت حافظه با برنامهنویس است. اگر برنامه شی را برنگرداند، سوراخ حافظه اتفاق میافتد. اگر برنامه تلاش کند به حافظهای را که هماکنون بازگردانده شده، دستیابی پیدا کند یا برگرداند، نتیجه تعریف شده نیست و ممکن است برنامه بیثبات شده و یا تخریب شود. این ممکن است با استفاده از اشارهگر مدتی باقی بماند، اما سرباری و پیچیدگی برنامه زیاد میشود. بازیافت حافظه اجازه دارد در هر زمانی اتفاق بیفتد. بهطوری که این زمانی اتفاق میافتد که برنامه بیکار باشد. اگر حافظهٔ خالی کافی برای تخصیص شی جدید در هیپ وجود نداشته باشد، ممکن است برنامه برای چند دقیقه متوقف شود. در جایی که زمان پاسخ یا اجرا مهم باشد، ادارهٔ حافظه و منابع اشیا استفاده میشوند.
جاوا از نوع اشارهگر ریاضی C و ++C پشتیبانی نمیکند. در جایی که آدرس اشیا و اعداد صحیح میتوانند به جای هم استفاده شوند. همانند ++C و بعضی زبانهای شیگرای دیگر، متغیرهای نوعهای اولیهٔ جاوا شیگرا نبودند. مقدار نوعهای اولیه، مستقیماً در فیلدها ذخیره میشوند. در فیلدها (برای اشیا) و در پشته (برای توابع)، بیشتر از هیپ استفاده میشود. این یک تصمیم هوشیارانه توسط طراح جاوا برای اجرا است. به همین دلیل جاوا یک زبان شیگرای خالص به حساب نمیآید.
گرامر
گرامر جاوا وسیعتر از ++C است و برخلاف ++C که ترکیبی است از ساختارها و شیگرایی، زبان جاوا یک زبان شیگرای خالص میباشد. فقط نوع دادة اصلی از این قاعده مستثنی است. جاوا بسیاری از ویژگیها را پشتیبانی میکند و از کلاسها برای سادهتر کردن برنامهنویسی و کاهش خطا استفاده میکند.
بر طبق قرارداد فایل هل بعد از کلاسهای عمومی نام گذاری میشوند. سپس باید پسوند java را به این صورت اضافه کرد: Hello world.java. این فایل اول باید با استفاده از کامپایلر جاوا به بایت کد کامپایل شود. در نتیجه فایل Hello world.class ایجاد میشود. این فایل قابل اجرا است. فایل جاوا ممکن است فقط یک کلاس عمومی داشته باشد. اما میتواند شامل چندین کلاس با دستیابی عمومی کمتر باشد.
کلاسی که به صورت خصوصی تعریف میشود ممکن است در فایل.java ذخیره شود. کامپایلر برای هر کلاسی که در فایل اصلی تعریف میشود یک کلاس فایل تولید میکند. که نام این کلاس فایل همنام کلاس است با پسوند.class
کلمه کلیدی public (عمومی) برای قسمتهایی که میتوانند از کدهای کلاسهای دیگر صدا زده بشوند، به کار برده میشود. کلمهٔ کلیدی static (ایستا) در جلوی یک تابع، یک تابع ایستا را که فقط وابسته به کلاس است و نه قابل استفاده برای نمونههایی از کلاس، نشان میدهد. فقط تابعهای ایستا میتوانند توسط اشیا بدون مرجع صدا زده شوند. دادههای ایستا به متغیرهایی که ایستا نیستند، نمیتوانند دسترسی داشته باشند.
کلمهٔ کلیدی void (تهی) نشان میدهد که تابع main هیچ مقداری را بر نمیگرداند. اگر برنامهٔ جاوا بخواهد با خطا از برنامه خارج شود، باید system.exit() صدا زده شود. کلمهٔ main یک کلمهٔ کلیدی در زبان جاوا نیست. این نام واقعی تابعی است که جاوا برای فرستادن کنترل به برنامه، صدا میزند. برنامه جاوا ممکن است شامل چندین کلاس باشد که هر کدام دارای تابع main هستند.
تابع main باید آرایهای از اشیا رشتهای را بپذیرد. تابع main میتواند از آرگومانهای متغیر به شکل public static void main(string…args) استفاده کند که به تابع main اجازه میدهد اعدادی دلخواه از اشیا رشتهای را فراخوانی کند. پارامترstring[]args آرایهای از اشیا رشته ایست که شامل تمام آرگومانهایی که به کلاس فرستاده میشود، است.
چاپ کردن، قسمتی از کتابخانهٔ استاندارد جاوا است. کلاس سیستم یک فیلد استاتیک عمومی به نام out تعریف کردهاست. شی out یک نمونه از کلاس printstream است و شامل تعداد زیادی تابع برای چاپ کردن اطلاعات در خروجی استاندارد است. همچنین شامل println(string) برای اضافه کردن یک خط جدید برای رشتهٔ فرستاده شده اضافه میکند.
توزیعهای جاوا
منظور از توزیع جاوا پیادهسازیهای مختلفی است که برای کامپایلر جاوا و همچنین مجموعه کتابخانههای استاندارد زبان جاوا (JDK) وجود دارد. در حال حاضر چهار توزیعکنندهٔ عمده جاوا وجود دارند:
سان میکروسیستمز: توزیع کننده اصلی جاوا و مبدع آن میباشد. در اکثر موارد هنگامی که گفته میشود جاوا منظور توزیع سان میباشد.
GNU Classpath: این توزیع از سوی موسسه نرمافزارهای آزاد منتشر شده و تقریباً تمامی کتابخانه استاندارد زبان جاوا در آن بدون بهرهگیری از توزیع شرکت سان از اول پیادهسازی شدهاست. یک کامپایلر به نام GNU Compiler for Java نیز برای کامپایل کردن کدهای جاوا توسط این موسسه ایجاد شدهاست. فلسفه انتخاب نام Classpath برای این پروژه رها کردن تکنولوژی جاوا از وابستگی به علامت تجاری جاوا است بطوریکه هیچ وابستگی یا محدودیتی برای استفاده آن از لحاظ قوانین حقوقی ایجاد نشود و از طرفی به خاطر وجود متغیر محیطی classpath در تمامی محیطهای احرایی برنامههای جاوا، این نام به نوعی تکنولوژی جاوا را برای خواننده القا میکند. کامپایلر GNU توانایی ایجاد کد اجرایی (در مقابل بایت کد توزیع سان) را داراست. لازم به ذکر است که در حال حاضر شرکت سان تقریباً تمامی کدهای JDK را تحت مجوز نرمافزارهای آزاد به صورت متن باز منتشر کردهاست و قول انتشار قسمت بسیار کوچکی از این مجموعه را که بهدلیل استفاده از کدهای شرکتهای ثانویه نتوانسته به صورت متن باز منتشر نماید در آینده نزدیک با بازنویسی این کدها دادهاست.
مایکروسافت #J: این در حقیقت یک توزیع جاوا نیست. بلکه زبانی مشابه میباشد که توسط مایکروسافت و در چارچوب.net ارائه شدهاست. انتظار اینکه در سیستمعاملی غیر از ویندوز هم اجرا شود را نداشته باشید.
AspectJ: این نیز یک زبان مجزا نیست. بلکه یک برنامه الحاقی میباشد که امکان برنامه نویسی Aspect Oriented را به جاوا میافزاید. این برنامه توسط بنیاد برنامهنویسی جلوهگرا و به صورت کدباز ارائه شدهاست.
کلاسهای خاص
برنامک (برنامههای کاربردی کوچک)
اپلت جاواها برنامههایی هستند که برای کاربردهایی نظیر نمایش در صفحات وب، ایجاد شدهاند. واژهٔ import باعث میشود کامپایلر جاوا کلاسهای javaapplet.Applet وjava.awt.Graphics را به کامپایل برنامه اضافه کند. کلاس Hello کلاس Applet را توسعه میدهد. کلاس اپلت چارچوبی برای کاربردهای گروهی برای نمایش و کنترل چرخهٔ زندگی اپلت، درست میکند. کلاس اپلت یک تابع پنجرهای مجرد است که برنامههای کوچکی با قابلیت نشان دادن واسط گرافیکی برای کاربر را فراهم میکند. کلاس Hello تابع موروثی print(Graphics) را از سوپر کلاس container باطل میکند، برای اینکه کدی که اپلت را نمایش میدهد، فراهم کند. تابع paint شیهای گرافیکی را که شامل زمینههای گرافیکی هستند را میفرستد تا برای نمایش اپلتها استفاده شوند. تابع paint برای نمایش "Hello world!" تابع drawstring(string,int,int) را صدا میزند.
جاوا سرولت
تکنولوژی servlet جاوا گسترس وب را به آسانی فراهم میکند. و شامل مکانیزمهایی برای توسعهٔ تابعی سرور وب و برایدسترسی به سیستمهای تجاری موجود است.servlet قسمتی از javaEE است که به درخواستهای مشتری پاسخ میدهد.
واژهٔ import کامپایلر جاوا را هدایت میکند که تمام کلاسهای عمومی و واسطها را از بستههای java.io وjava.servlet را در کامپایل وارد کند.
کلاس Hello کلاس Genericservlet را توسعه میدهد. کلاس Genericservlet واسطی برای سرور فراهم میکند تا درخواست را به servlet بفرستد و چرخهٔ زندگی servlet را کنترل کند.
JSP
صفحهٔ سرور جاوا قسمتی از سرور javaEE است که پاسخ تولید میکند. نوعاً صفحات HTML به درخواستهای HTTP از مشتری.JSPها کد جاوا در صفحهٔ HTML را با استفاده از حائل <%and%> اضافه میکنند.JSP به javaservlet کامپایل میشود.
سوینگ
Swing کتابخانهٔ واسط گرافیکی کاربر است برای پلت فرم javaSE. ابزاری مشابه پنجره، GTK و motif توسط شرکت sun فراهم شدهاند. این مثال کاربرد swing یک پنجرهٔ واحد همراه با Hello world را ایجاد میکند.
اولین جملهٔ import کامپایلر جاوا را هدایت میکندتا کلاس Borderlayout را از بستهٔ java.awt در جاوا به کامپایل اضافه کند. و import دوم همهٔ کلاسهای عمومی و واسط آنها را از بستهٔ javax.swing اضافه میکند. کلاس Hello کلاس Jframe را توسعه میدهد. کلاس Jframe یک پنجره با میلهٔ عنوان و کنترل بستن است.
زمانی که برنامه آغاز میشود، تابع main با JVM صدا زده میشود. این یک نمونهٔ جدید از کلاس Hello را ایجاد کرده و با صدا زدن تابع setvisible(boolean) با مقدار true نمایش داده میشود.
یکی از ویژگیهای جاوا قابل حمل بودن آن است. یعنی برنامهٔ نوشته شده به زبان جاوا باید به طور مشابهی در کامپیوترهای مختلف با سختافزارهای متفاوت اجرا شود. و باید این توانایی را داشته باشد که برنامه یک بار نوشته شود، یک بار کامپایل شود و در همه کامپیوترها اجرا گردد. به این صورت که کد کامپایل شدهٔ جاوا را ذخیره میکند، اما نه بهصورت کد ماشین بلکه بهصورت بایتکد جاوا. دستورالعملها شبیه کد ماشین هستند، اما با ماشینهای مجازی که به طور خاص برای سختافزارهای مختلف نوشته شدهاند، اجرا میشوند. در نهایت کاربر از سکوی جاوا نصب شده روی ماشین خود یا مرورگر وب استفاده میکند. کتابخانههای استاندارد یک راه عمومی برای دسترسی به ویژگیهای خاص فراهم میکنند. مانند گرافیک، نخکشی و شبکه. در بعضی از نسخههای ماشین مجازی جاوا، بایتکدها میتوانند قبل و در زمان اجرای برنامه به کدهای محلی کامپایل شوند. فایدهٔ اصلی استفاده از بایتکد، قسمت کردن است. اما ترجمهٔ کلی یعنی برنامههای ترجمه شده تقریباً همیشه کندتر از برنامههای کامپایل شدهٔ محلی اجرا میشوند. این شکاف میتواند با چند تکنیک خوشبینانه که در کاربردهای JVM قبلی معرفی شد، کم شود. یکی از این تکنیکها JIT است که بایتکد جاوا را به کد محلی ترجمه کرده و سپس آن را پنهان میکند. در نتیجه برنامه خیلی سریعتر نسبت به کدهای ترجمه شدهٔ خالص شروع و اجرا میشود. بیشتر VMهای پیشرفته، بهصورت کامپایل مجدد پویا، در آنالیز VM، رفتار برنامهٔ اجرا شده و کامپایل مجدد انتخاب شده و بهینهسازی قسمتهای برنامه، استفاده میشوند. کامپایل مجدد پویا میتواند کامپایل ایستا را بهینهسازی کند. زیرا میتواند قسمت hot spot برنامه و گاهی حلقههای داخلی که ممکن است زمان اجرای برنامه را افزایش دهند را تشخیص دهد. کامپایل JIT و کامپایل مجدد پویا به برنامههای جاوا اجازه میدهد که سرعت اجرای کدهای محلی بدون از دست دادن قابلیت انتقال افزایش پیدا کند.
تکنیک بعدی به عنوان کامپایل ایستا شناخته شدهاست. که کامپایل مستقیم به کدهای محلی است مانند بسیاری از کامپایلرهای قدیمی. کامپایلر ایستای جاوا، بایتکدها را به کدهای شی محلی ترجمه میکند.
کارایی جاوا نسبت به نسخههای اولیه بیشتر شد. در تعدادی از تستها نشان داده شد که کارایی کامپایلرJIT کاملاًَ مشابه کامپایلر محلی شد. عملکرد کامپایلرها لزوماً کارایی کدهای کامپایل شده را نشان نمیدهند. یکی از پیشرفتهای بی نظیر در در زمان اجرای ماشین این بود که خطاها ماشین را دچار اشکال نمیکردند. علاوه بر این در زمان اجرای ماشینی مانند جاوا وسایلی وجود دارد که به زمان اجرای ماشین متصل شده و هر زمانی که یک استثنا رخ میدهد، اطلاعات اشکال زدایی که در حافظه وجود دارد، ثبت میکنند.
پیادهسازی
شرکت سان میکروسیستم مجوز رسمی برای پلت فرم استاندارد جاوا را به مایکروسافت ویندوز, لینوکس، و سولاریس (سیستمعامل). دادهاست. همچنین محیطهای دیگری برای دیگر پلت فرمها فراهم آوردهاست. علامت تجاری مجوز شرکت سان میکروسیستم طوری بود که با همهٔ پیادهسازیها سازگار باشد. به علت اختلاف قانونی که با ماکروسافت پیدا کرد، زمانی که شرکت سان ادعا کرد که پیادهسازی ماکروسافت از RMI یا JNI پشتیبانی نکرده و ویژگیهای خاصی را برای خودش اضافه کردهاست. شرکت سان در سال ۱۹۹۷ پیگیری قانونی کرد و در سال ۲۰۰۱ در توافقی ۲۰ میلیون دلاری برنده شد. در نتیجه کمی بعدماکروسافت جاوا را به ویندوز فرستاد. در نسخهٔ اخیر ویندوز، مرورگر اینترنت نمیتواند از جاوا پلت فرم پشتیبانی کند. شرکت سان و دیگران یک سیستم اجرای جاوای رایگان برای آنها و نسخههای دیگر ویندوز فراهم آوردند.
اداره خودکار حافظه
جاوا از حافظهٔ بازیافتی خودکار برای ادارهٔ حافظه در چرخهٔ زندگی یک شی استفاده میکند. برنامهنویس زمانی که اشیا به وجود میآیند، این حافظه را تعیین میکند. و در زمان اجرا نیز، زمانی که این اشیا در استفادهٔ زیاد طولانی نباشند، برنامه نویس مسئول بازگرداندن این حافظهاست. زمانی که مرجعی برای شیهای باقیمانده نیست، شیهای غیر قابل دسترس برای آزاد شدن به صورت خودکار توسط بازیافت حافظه، انتخاب میشوند. اگر برنامهنویس مقداری از حافظه را برای شیهایی که زیاد طولانی نیستند، نگه دارد، چیزهایی شبیه سوراخ حافظه اتفاق میافتند.
یکی از عقایدی که پشت سر مدل ادارهٔ حافظهٔ خودکار جاوا وجود دارد، این است که برنامهنویس هزینهٔ اجرای ادارهٔ دستی حافظه را نادیده میگیرد. در بعضی از زبانها حافظه لازم برای ایجاد یک شی، به صورت ضمنی و بدون شرط، به پشته تخصیص داده میشود. و یا بهطور صریح اختصاص داده شده و از heap بازگردانده میشود. در هر کدام از این راهها، مسئولیت ادارهٔ اقامت حافظه با برنامهنویس است. اگر برنامه شی را برنگرداند، سوراخ حافظه اتفاق میافتد. اگر برنامه تلاش کند به حافظهای را که هماکنون بازگردانده شده، دستیابی پیدا کند یا برگرداند، نتیجه تعریف شده نیست و ممکن است برنامه بیثبات شده و یا تخریب شود. این ممکن است با استفاده از اشارهگر مدتی باقی بماند، اما سرباری و پیچیدگی برنامه زیاد میشود. بازیافت حافظه اجازه دارد در هر زمانی اتفاق بیفتد. بهطوری که این زمانی اتفاق میافتد که برنامه بیکار باشد. اگر حافظهٔ خالی کافی برای تخصیص شی جدید در هیپ وجود نداشته باشد، ممکن است برنامه برای چند دقیقه متوقف شود. در جایی که زمان پاسخ یا اجرا مهم باشد، ادارهٔ حافظه و منابع اشیا استفاده میشوند.
جاوا از نوع اشارهگر ریاضی C و ++C پشتیبانی نمیکند. در جایی که آدرس اشیا و اعداد صحیح میتوانند به جای هم استفاده شوند. همانند ++C و بعضی زبانهای شیگرای دیگر، متغیرهای نوعهای اولیهٔ جاوا شیگرا نبودند. مقدار نوعهای اولیه، مستقیماً در فیلدها ذخیره میشوند. در فیلدها (برای اشیا) و در پشته (برای توابع)، بیشتر از هیپ استفاده میشود. این یک تصمیم هوشیارانه توسط طراح جاوا برای اجرا است. به همین دلیل جاوا یک زبان شیگرای خالص به حساب نمیآید.
گرامر
گرامر جاوا وسیعتر از ++C است و برخلاف ++C که ترکیبی است از ساختارها و شیگرایی، زبان جاوا یک زبان شیگرای خالص میباشد. فقط نوع دادة اصلی از این قاعده مستثنی است. جاوا بسیاری از ویژگیها را پشتیبانی میکند و از کلاسها برای سادهتر کردن برنامهنویسی و کاهش خطا استفاده میکند.
بر طبق قرارداد فایل هل بعد از کلاسهای عمومی نام گذاری میشوند. سپس باید پسوند java را به این صورت اضافه کرد: Hello world.java. این فایل اول باید با استفاده از کامپایلر جاوا به بایت کد کامپایل شود. در نتیجه فایل Hello world.class ایجاد میشود. این فایل قابل اجرا است. فایل جاوا ممکن است فقط یک کلاس عمومی داشته باشد. اما میتواند شامل چندین کلاس با دستیابی عمومی کمتر باشد.
کلاسی که به صورت خصوصی تعریف میشود ممکن است در فایل.java ذخیره شود. کامپایلر برای هر کلاسی که در فایل اصلی تعریف میشود یک کلاس فایل تولید میکند. که نام این کلاس فایل همنام کلاس است با پسوند.class
کلمه کلیدی public (عمومی) برای قسمتهایی که میتوانند از کدهای کلاسهای دیگر صدا زده بشوند، به کار برده میشود. کلمهٔ کلیدی static (ایستا) در جلوی یک تابع، یک تابع ایستا را که فقط وابسته به کلاس است و نه قابل استفاده برای نمونههایی از کلاس، نشان میدهد. فقط تابعهای ایستا میتوانند توسط اشیا بدون مرجع صدا زده شوند. دادههای ایستا به متغیرهایی که ایستا نیستند، نمیتوانند دسترسی داشته باشند.
کلمهٔ کلیدی void (تهی) نشان میدهد که تابع main هیچ مقداری را بر نمیگرداند. اگر برنامهٔ جاوا بخواهد با خطا از برنامه خارج شود، باید system.exit() صدا زده شود. کلمهٔ main یک کلمهٔ کلیدی در زبان جاوا نیست. این نام واقعی تابعی است که جاوا برای فرستادن کنترل به برنامه، صدا میزند. برنامه جاوا ممکن است شامل چندین کلاس باشد که هر کدام دارای تابع main هستند.
تابع main باید آرایهای از اشیا رشتهای را بپذیرد. تابع main میتواند از آرگومانهای متغیر به شکل public static void main(string…args) استفاده کند که به تابع main اجازه میدهد اعدادی دلخواه از اشیا رشتهای را فراخوانی کند. پارامترstring[]args آرایهای از اشیا رشته ایست که شامل تمام آرگومانهایی که به کلاس فرستاده میشود، است.
چاپ کردن، قسمتی از کتابخانهٔ استاندارد جاوا است. کلاس سیستم یک فیلد استاتیک عمومی به نام out تعریف کردهاست. شی out یک نمونه از کلاس printstream است و شامل تعداد زیادی تابع برای چاپ کردن اطلاعات در خروجی استاندارد است. همچنین شامل println(string) برای اضافه کردن یک خط جدید برای رشتهٔ فرستاده شده اضافه میکند.
توزیعهای جاوا
منظور از توزیع جاوا پیادهسازیهای مختلفی است که برای کامپایلر جاوا و همچنین مجموعه کتابخانههای استاندارد زبان جاوا (JDK) وجود دارد. در حال حاضر چهار توزیعکنندهٔ عمده جاوا وجود دارند:
سان میکروسیستمز: توزیع کننده اصلی جاوا و مبدع آن میباشد. در اکثر موارد هنگامی که گفته میشود جاوا منظور توزیع سان میباشد.
GNU Classpath: این توزیع از سوی موسسه نرمافزارهای آزاد منتشر شده و تقریباً تمامی کتابخانه استاندارد زبان جاوا در آن بدون بهرهگیری از توزیع شرکت سان از اول پیادهسازی شدهاست. یک کامپایلر به نام GNU Compiler for Java نیز برای کامپایل کردن کدهای جاوا توسط این موسسه ایجاد شدهاست. فلسفه انتخاب نام Classpath برای این پروژه رها کردن تکنولوژی جاوا از وابستگی به علامت تجاری جاوا است بطوریکه هیچ وابستگی یا محدودیتی برای استفاده آن از لحاظ قوانین حقوقی ایجاد نشود و از طرفی به خاطر وجود متغیر محیطی classpath در تمامی محیطهای احرایی برنامههای جاوا، این نام به نوعی تکنولوژی جاوا را برای خواننده القا میکند. کامپایلر GNU توانایی ایجاد کد اجرایی (در مقابل بایت کد توزیع سان) را داراست. لازم به ذکر است که در حال حاضر شرکت سان تقریباً تمامی کدهای JDK را تحت مجوز نرمافزارهای آزاد به صورت متن باز منتشر کردهاست و قول انتشار قسمت بسیار کوچکی از این مجموعه را که بهدلیل استفاده از کدهای شرکتهای ثانویه نتوانسته به صورت متن باز منتشر نماید در آینده نزدیک با بازنویسی این کدها دادهاست.
مایکروسافت #J: این در حقیقت یک توزیع جاوا نیست. بلکه زبانی مشابه میباشد که توسط مایکروسافت و در چارچوب.net ارائه شدهاست. انتظار اینکه در سیستمعاملی غیر از ویندوز هم اجرا شود را نداشته باشید.
AspectJ: این نیز یک زبان مجزا نیست. بلکه یک برنامه الحاقی میباشد که امکان برنامه نویسی Aspect Oriented را به جاوا میافزاید. این برنامه توسط بنیاد برنامهنویسی جلوهگرا و به صورت کدباز ارائه شدهاست.
کلاسهای خاص
برنامک (برنامههای کاربردی کوچک)
اپلت جاواها برنامههایی هستند که برای کاربردهایی نظیر نمایش در صفحات وب، ایجاد شدهاند. واژهٔ import باعث میشود کامپایلر جاوا کلاسهای javaapplet.Applet وjava.awt.Graphics را به کامپایل برنامه اضافه کند. کلاس Hello کلاس Applet را توسعه میدهد. کلاس اپلت چارچوبی برای کاربردهای گروهی برای نمایش و کنترل چرخهٔ زندگی اپلت، درست میکند. کلاس اپلت یک تابع پنجرهای مجرد است که برنامههای کوچکی با قابلیت نشان دادن واسط گرافیکی برای کاربر را فراهم میکند. کلاس Hello تابع موروثی print(Graphics) را از سوپر کلاس container باطل میکند، برای اینکه کدی که اپلت را نمایش میدهد، فراهم کند. تابع paint شیهای گرافیکی را که شامل زمینههای گرافیکی هستند را میفرستد تا برای نمایش اپلتها استفاده شوند. تابع paint برای نمایش "Hello world!" تابع drawstring(string,int,int) را صدا میزند.
جاوا سرولت
تکنولوژی servlet جاوا گسترس وب را به آسانی فراهم میکند. و شامل مکانیزمهایی برای توسعهٔ تابعی سرور وب و برایدسترسی به سیستمهای تجاری موجود است.servlet قسمتی از javaEE است که به درخواستهای مشتری پاسخ میدهد.
واژهٔ import کامپایلر جاوا را هدایت میکند که تمام کلاسهای عمومی و واسطها را از بستههای java.io وjava.servlet را در کامپایل وارد کند.
کلاس Hello کلاس Genericservlet را توسعه میدهد. کلاس Genericservlet واسطی برای سرور فراهم میکند تا درخواست را به servlet بفرستد و چرخهٔ زندگی servlet را کنترل کند.
JSP
صفحهٔ سرور جاوا قسمتی از سرور javaEE است که پاسخ تولید میکند. نوعاً صفحات HTML به درخواستهای HTTP از مشتری.JSPها کد جاوا در صفحهٔ HTML را با استفاده از حائل <%and%> اضافه میکنند.JSP به javaservlet کامپایل میشود.
سوینگ
Swing کتابخانهٔ واسط گرافیکی کاربر است برای پلت فرم javaSE. ابزاری مشابه پنجره، GTK و motif توسط شرکت sun فراهم شدهاند. این مثال کاربرد swing یک پنجرهٔ واحد همراه با Hello world را ایجاد میکند.
اولین جملهٔ import کامپایلر جاوا را هدایت میکندتا کلاس Borderlayout را از بستهٔ java.awt در جاوا به کامپایل اضافه کند. و import دوم همهٔ کلاسهای عمومی و واسط آنها را از بستهٔ javax.swing اضافه میکند. کلاس Hello کلاس Jframe را توسعه میدهد. کلاس Jframe یک پنجره با میلهٔ عنوان و کنترل بستن است.
زمانی که برنامه آغاز میشود، تابع main با JVM صدا زده میشود. این یک نمونهٔ جدید از کلاس Hello را ایجاد کرده و با صدا زدن تابع setvisible(boolean) با مقدار true نمایش داده میشود.