انواع رایانه
انواع رایانه
رایانه‌های توکار (جاسازی شده)

رایانه‌هایی هم وجود دارند که تنها برای کاربردهایی ویژه طراحی می‌شوند. در ۲۰ سال گذشته، هرچند برخی ابزارهای خانگی که از نمونه‌های قابل ذکر آن می‌توان جعبه‌های بازی‌های ویدئویی را که بعدها در دستگاه‌های دیگری از جمله تلفن همراه، دوربین‌های ضبط ویدئویی، و PDAها و ده‌ها هزار وسیله خانگی، صنعتی، خودروسازی و تمام ابزاری که در درون آن‌ها مدارهایی که نیازهای ماشین تورینگ را مهیا ساخته‌اند، گسترش یافت، را نام برد (اغلب این لوازم برنامه‌هایی را در خود دارند که بصورت ثابت روی ROM تراشه‌هایی که برای تغییر نیاز به تعویض دارند، نگاشته شده‌اند).





این رایانه‌ها که در درون ابزارهای با کاربرد ویژه گنجانیده شده‌اند «ریزکنترل‌گرها» یا رایانه‌های توکار" (Embedded Computers) نامیده می‌شوند. بنا بر این تعریف این رایانه‌ها به عنوان ابزاری که با هدف پردازش اطّلاعات طراحی گردیده محدودیت‌هایی دارد. بیش‌تر می‌توان آن‌ها را به ماشین‌هایی تشبیه کرد که در یک مجموعه بزرگ‌تر به عنوان یک بخش حضور دارند مانند دستگاه‌های تلفن، ماکروفرها و یا هواپیما که این رایانه‌ها بدون تغییری فیزیکی به دست کاربر می‌توانند برای هدف‌های گونه‌گونی به کارگرفته شوند.




رایانه‌های شخصی

اشخاصی که با انواع دیگری از رایانه‌ها ناآشنا هستند از عبارت رایانه برای رجوع به نوع خاصی استفاده می‌کنند که رایانه شخصی (PC) نامیده می‌شوند. رایانه‌ای است که از اجزای الکترونیکی میکرو (ریز) تشکیل شده که جزو کوچک‌ترین و ارزان‌ترین رایانه‌ها به شمار می‌روند و کاربردهای خانگی و اداری دارند. شرکت آی‌بی‌ام رایانه شخصی را در سال ۱۹۸۱ میلادی به جهان معرفی کرد.

نخستین رایانه‌ آی‌بی‌ام از برخی از ماشین حساب‌های امروزی نیز ضعیف‌تر است ولی در آن زمان شگفت انگیز بود. رایانه شخصی سی سال پیش دارای حافظه ROM با ظرفیت 40K و حافظه RAM با ظرفیت 64K بود. البته کاربر می‌توانست حافظه RAM را تا 256K افزایش دهد. قیمت هر ماژول 64K حافظه والانیوز





سرمایه‌گذاری

صنعت رایانه همواره صنعتی رو به رشد بوده است چه در حوزهٔ سخت‌افزار چه در حوزهٔ نرم‌افزار، این صنعت پیوسته مورد توجه سرمایه گذاران بوده است و سرمایه‌ها را به خود جذب کرده است. آیندهٔ روشن این فناوری همواره سرمایه داران را ترغیب می‌کند تا روی این صنعت ‍سرمایه‌گذاری کنند.




پردازش اطلاعات
به مفهوم کلّی، پردازش موازی اطلاعات عبارت است از دریافت داده‌ها، ایجاد فرایند مقایسه و در نهایت تغییر یا عدم تغییر اطّلاعات موجود به صورتی دیگر. بدین ترتیب، هر آنچه که در جهان رخ می‌دهد، می‌تواند به نوعی پردازش اطّلاعات تلقی گردد.




داده کاوی چیست

داده عبارتست از هر شکل، نمودار، عدد، متن، عکس و... که پیام زیادی منتقل نمی‌کند، و برای استفاده از آن باید آن را پردازش کرد. برای مثال نتایج حاصل از یک آمارگیری داده در نظر گرفته می‌شود، چراکه اعداد حاصل از آمارگیری اطلاعات چندانی در اختیار قرار نمی‌دهد و باید آن را پردازش کرد تا شاخص‌های آماری و سایر اطلاعات مورد نیاز بتوانند ویژگی‌های جامعه را بیان کنند.




بانک اطلاعات

به نتایج پردازش داده، اطلاعات می‌گویند. کسب اطلاعات در واقع هدف از جمع آوری داده و پردازش آن می‌باشد تا بتوان با استفاده از آن به نتایج مطلوب دسترسی پیدا کرد. معمولا اطلاعات برای مخاطب ارزش بسیار بیشتری دارد و می‌تواند مطالب بیشتری از آن دریافت کند. این تعاریف بطور نسبی مطرح می‌شوند و ممکن است داده یک سیستم، اطلاعات سیستم دیگر باشد و بالعکس.




پردازش داده چیست

پردازش داده کامپیوتر، هر پردازشی است که داده را به اطلاعات یا دانش تبدیل می‌کند. پردازش معمولاً بصورت اتوماتیک است و بر روی کامپیوتر اجرا می‌شود. بدلیل اینکه داده‌ها وقتی که خوب ارائه می‌شوند و در واقع حاوی اطلاعاتند، بسیار مفیدترند، سیستم‌های پردازش داده اغلب سیستم‌های اطلاعاتی نامیده می‌شوند تا بر کاربردی بودن آن تاکید شود. با این حال، این عبارات بطور کلی مترادفند و نمایش دهنده تبدیلات مشابه، سیستم‌های پردازش داده بطور متداول داده‌های خام را به اطلاعات تبدیل می‌کنند، و مشابها سیستم‌های اطلاعاتی داده‌های خام را به عنوان ورودی می‌گیرند تا اطلاعات را به عنوان خروجی تولید کنند. به داده می‌توان به عنوان یک ماده خام نگاه کرد، که بعداً به اطلاعات تبدیل می‌شود. برای مثال یک کارخانه برای تولید محصول نهایی خود نیاز به مواد اولیه یا مواد خام خواهد داشت تا بتواند به محصول نهایی که مورد استفاده قرار خواهد گرفت برسد. در این بین متناسب با نوع ماده خام و محصول نهایی، فرآوری‌های مختلف و مراحل متفاوتی روی ماده خام انجام می‌شود. این مراحل مشابه مراحل ذکر شده برای پردازش داده‌است، یک سیستم اطلاعاتی ماده خام (داده اولیه) را می‌گیرد و پس انجام مراحل فرآوری و آماده‌سازی آن -که به آن پردازش گفته می‌شود- ماده خام را تبدیل به محصول نهایی (اطلاعات) می‌کند و به عنوان خروجی می‌دهد تا مورد استفاده قرار گیرد. همانطور که مشخص است، مراحل فرآوری برای یک کارخانه تولید خودرو با مراحل فرآوری یک کارخانه تولید تجهیزات صنعتی متفاوت است؛ در سیستم‌های اطلاعاتی هم متناسب با نوع داده اولیه و اطلاعات مطلوب مراحل پردازش تفاوت خواهد کرد.




تعاریف

در پردازش داده، داده‌ها کاراکترها و اعداد هستند که بیانگر اندازه‌ها از دیدگاه پدیده‌های قابل مشاهده‌اند. یک داده اولیه تنها یک اندازه از پدیده قابل مشاهده‌است. اطلاعات اندازه‌گیری شده سپس بصورت الگوریتمی مشتق می‌شود و بصورت منطقی نتیجه‌گیری شود و یا بصورت آماری از چندین داده محاسبه شود (شواهد). اطلاعات، یا به صورت پاسخ به یک درخواست تعریف می‌شود و یا پاسخ به یک محرک که می‌تواند درخواستهای بعدی را در پی داشته باشد. برای مثال جمع آوری داده‌های لرزه نگاری به تغییر داده لرزه نگاری برای خنثی کردن اختلال، افزایش انتقال سیگنال به مکان مناسبی در فضا منجر می‌شود. مراحل پردازش بطور معمول آنالیز سرعت‌ها و فرکانس‌ها، تصحیح استاتیک، ساده‌سازی، انتقال نرمال، انتقال عمیق، پشته سازی، و نقل مکان را شامل می‌شود، که می‌تواند قبل و یا بعد از پشته سازی صورت گیرد. پردازش لرزه نگاری تفسیر بهتر را تسهیل می‌کند چراکه ساختارهای زیر سطحی و بازتاب‌های هندسی مشهود ترند.




تعریف کلی

بطورکلی، اصطلاح پردازش داده می‌تواند هر پردازشی را که داده را از شکلی به شکلی دیگر تبدیل می‌کند در برگیرد، اگرچه "تبدیل داده" می‌تواند اصطلاح منطقی تر و صحیح تری باشد. از این دیگاه، پردازش داده تبدیل داده به اطلاعات خواهد بود و همچنین تبدیل مجدد اطلاعات به داده. تفاوت اینجاست که تبدیل نیاز به درخواست نخواهد داشت. برای مثال، اطلاعات بصورت رشته‌ای از کاراکترها که یک جمله را تشکیل می‌دهند عبارتست از دادهٔ تبدیل شده (یا کد شده) بی معنی نزدیک به سخت‌افزار که اطلاعات معنی دار برای انسان را منتج می‌کند.




تحلیل داده

زمانی که محدوده‌ای که داده از آن استخراج شده علم یا مهندسی است، پردازش داده و سیستم‌های اطلاعاتی محدوده‌ای بسیار گسترده از اصطلاحات خواهند بود؛ اصطلاح آنالیز داده تخصصی تر معمولاً با تمرکز بیشتر روی مشتقات الگوریتمی بسیار تخصصی تر و دقیق تر و محاسبات پیچیده همراه خواهد بود که کمتر در محدوده محیط‌های کاری دیده می‌شود. در این زمینه بسته‌های آنالیز داده مانند DAP، gretl، PSPP بیشتر مورد استفاده قرار می‌گیرند.




پردازش

عملا تمام پردازشهای طبیعی را می‌توان به عنوان مثال‌هایی از سیستم‌های پردازش داده دانست که اطلاعات "قابل مشاهده" به شکل فشار، نور و... هستند که بوسیله مشاهده کننده‌های انسان که سیگنال‌های الکتریکی را در سیستم اعصاب تبدیل می‌کنند و ما آنها را به عنوان حس‌های خود مانند لامسه، صدا و تصویر می‌شناسیم. حتی تعامل سیستم‌های غیر زنده نیز به عنوان سیستم‌های پردازش داده ابتدایی این طریق ممکن است بیان شوند.




المان‌های پردازش داده

برای اینکه داده بتواند توسط کامپیوتر پردازش شود، باید ابتدا به شکلی تبدیل شود که توسط کامپیوتر قابل خواندن باشد. وقتی که داده به صورت دیجیتال است، فرآیندهای متفاوتی می‌تواند روی آن رخ دهد تا به اطلاعات مفید برسیم. پردازش داده شامل تمام پردازش‌ها از ثبت داده‌ها تا داده کاوی است:


ثبت داده
خالص سازی داده
کد کردن داده
تبدیل داده
ترجمه داده
خلاصه سازی داده
اجتماع داده
معتبر سازی داده
جدول بندی داده
آنالیز آماری
گرافیک کامپیوتری
نگهداری داده
داده کاوی





رمزنگاری

رمزنگاری دانشی است که به بررسی و شناختِ اصول و روش‌های انتقال یا ذخیرهٔ اطلاعات به صورت امن (حتی اگر مسیر انتقال اطلاعات و کانال‌های ارتباطی یا محل ذخیره اطلاعات ناامن باشند) می‌پردازد.

رمزنگاری استفاده از تکنیکهای ریاضی، برای برقراری امنیت اطلاعات است. دراصل رمزنگاری دانش تغییر دادن متن پیام یا اطلاعات به کمک کلید رمز و با استفاده از یک الگوریتم رمز است، به صورتی که تنها شخصی که از کلید و الگوریتم مطلع است قادر به استخراج اطلاعات اصلی از اطلاعات رمز شده باشد و شخصی که از یکی یا هر دوی آن‌ها اطلاع ندارد، نتواند به اطلاعات دسترسی پیدا کند. دانش رمزنگاری بر پایه مقدمات بسیاری از قبیل تئوری اطلاعات، نظریه اعداد و آمار بنا شده‌است و امروزه به طور خاص در علم مخابرات مورد بررسی و استفاده قرار می‌گیرد. معادل رمزنگاری در زبان انگلیسی کلمه Cryptography است، که برگرفته از لغات یونانی kryptos به مفهوم «محرمانه» و graphien به معنای «نوشتن» است.




تاریخچه

رمزنگاری سابقه‎ای طولانی و جذاب دارد، که اولین کاربرد آن به ۴۰۰۰ سال پیش در مصر باستان بازمی‌گردد.




رمزنگاری، پنهان‌نگاری، کدگذاری

در رمزنگاری، وجود اطلاعات یا ارسال شدن پیام به هیچ وجه مخفی نمی‌باشد، بلکه ذخیره اطلاعات یا ارسال پیام مشخص است، اما تنها افراد مورد نظر می‌توانند اطلاعات اصلی را بازیابی کنند. بالعکس در پنهان‌نگاری، اصل وجود اطلاعات یا ارسال پیام محرمانه، مخفی نگاه داشته می‌شود و غیر از طرف ارسال‌کننده و طرف دریافت‌کننده کسی از ارسال پیام آگاه نمی‌شود.

در رمزنگاری محتویات یک متن به صورت حرف به حرف و در بعضی موارد بیت به بیت تغییر داده می‌شود و هدف تغییر محتوای متن است نه تغییر ساختار زبان‌شناختی آن. در مقابل کدگذاری تبدیلی است که کلمه‌ای را با یک کلمه یا نماد دیگر جایگزین می‌کند و ساختار زبان‌شناختی متن را تغییر می‌دهد.

ریشهٔ واژهٔ Cryptography برگرفته از یونانی به معنای «محرمانه نوشتن متون» است. رمزنگاری پیشینهٔ طولانی ودرخشان دارد که به هزاران سال قبل برمی گردد. متخصصین رمزنگاری بین رمز وکد تمایز قائل می‌شوند. رمز عبارتست از تبدیل کاراکتر به کاراکتر یا بیت به بیت بدون آن که به محتویات زبان شناختی آن پیام توجه شود. در طرف مقابل، کد تبدیلی است که کلمه‌ای را با یک کلمه یا علامت دیگر جایگزین می‌کند. امروزه از کدها استفادهٔ چندانی نمی‌شود اگر چه استفاده از آن پیشینهٔ طولانی و پرسابقه‌ای دارد. موفق‌ترین کدهایی که تاکنون نوشته شده ابداع شده‌اند توسط ارتش ایالات متحده و در خلال جنگ جهانی دوم در اقیانوس آرام بکار گرفته شد.




اصول ششگانه کرشُهف

آگوست کرشُهف شهرت خود را از پژوهشهای زبانشناسی و کتابهایی که در این خصوص و زبان ولاپوک نوشته بود بدست آورد. او در سال ۱۸۸۳ دو مقاله با عنوان «رمز نگاری نظامی» منتشر کرد. در این دو مقاله شش اصل اساسی وجود داشت که اصل دوم آن به عنوان یکی از قوانین رمز نگاری هنوز هم مورد استفاده دانشمندان در رمز نگاری پیشرفته‌است:

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





رمزنگاری پیشرفته

با پدید آمدن رایانه‌ها و افزایش قدرت محاسباتی آنها، دانش رمزنگاری وارد حوزهٔ علوم رایانه گردید و این پدیده، موجب بروز سه تغییر مهم در مسائل رمزنگاری شد:

وجود قدرت محاسباتی بالا این امکان را پدید آورد که روش‌های پیچیده‌تر و مؤثرتری برای رمزنگاری به وجود آید.
روش‌های رمزنگاری که تا قبل از آن اصولاً برای رمز کردن پیام به کار می‌رفتند، کاربردهای جدید و متعددی پیدا کردند.
تا قبل از آن، رمزنگاری عمدتاً روی اطلاعات متنی و با استفاده از حروف الفبا انجام می‌گرفت؛ اما ورود رایانه باعث شد که رمزنگاری روی انواع اطلاعات و بر مبنای بیت انجام شود.





تعاریف و اصطلاحات

عناصر مهمی که در رمزنگاری مورد استفاده قرار می‌گیرند به شرح زیر می‌باشد:

متن آشکار

پیام و اطلاعات را در حالت اصلی و قبل از تبدیل شدن به حالت رمز، متن آشکار یا اختصاراً پیام می‌نامند. در این حالت اطلاعات قابل فهم توسط انسان است.




متن رمز

به پیام و اطلاعات بعد از درآمدن به حالت رمز، گفته می‌شود. اطلاعات رمز شده توسط انسان قابل فهم نیست.




رمزگذاری (رمز کردن)

عملیاتی است که با استفاده از کلید رمز، پیام را به رمز تبدیل می‌کند.




رمزگشایی (بازکردن رمز)

عملیاتی است که با استفاده از کلید رمز، پیام رمز شده را به پیام اصلی باز می‌گرداند. از نظر ریاضی، این الگوریتم عکس الگوریتم رمز کردن است.





کلید رمز

اطلاعاتی معمولاً عددی است که به عنوان پارامتر ورودی به الگوریتم رمز داده می‌شود و عملیات رمزگذاری و رمزگشایی با استفاده از آن انجام می‌گیرد. انواع مختلفی از کلیدهای رمز در رمزنگاری تعریف و استفاده می‌شود.

رمزنگاری دانش گسترده‌ای است که کاربردهای متنوعی دارد. در این حوزهٔ وسیع، تعاریف زیر از اهمیت ویژه‌ای برخوردار هستند:




سرویس رمزنگاری

به طور کلی، سرویس رمزنگاری، به قابلیت و امکانی اطلاق می‌شود که بر اساس فنون رمزنگاری حاصل می‌گردد. قبل از ورود رایانه‌ها به حوزهٔ رمزنگاری، تقریباً کاربرد رمزنگاری محدود به رمز کردن پیام و پنهان کردن مفاد آن می‌شده‌است. اما در رمزنگاری پیشرفته سرویس‌های مختلفی از جمله موارد زیر ارائه گردیده‌است:

حفظ محرمانگی یا امنیت محتوا∗: ارسال یا ذخیره اطلاعات به نحوی که تنها افراد مجاز بتوانند از محتوای آن مطلع شوند، که همان سرویس اصلی و اولیهٔ پنهان کردن مفاد پیام است.




حفظ صحت داده‌ها یا سلامت محتوا ∗

به معنای ایجاد اطمینان از صحت اطلاعات و عدم تغییر محتوای اولیهٔ آن در حین ارسال است. تغییر محتوای اولیهٔ اطلاعات ممکن است به صورت اتفاقی (در اثر مشکلات مسیر ارسال) و یا به صورت عمدی باشد.

احراز هویت یا اصالت سنجی محتوا∗

به معنای تشخیص و ایجاد اطمینان از هویت ارسال‌کننده اطلاعات و عدم امکان جعل هویت افراد می‌باشد.

عدم انکار∗

به این معنی است که ارسال‌کنندهٔ اطلاعات نتواند در آینده ارسال آن را انکار یا مفاد آن را تکذیب نماید.

چهار مورد بالا، سرویس‌های اصلی رمزنگاری تلقی می‌شوند و دیگر اهداف و سرویس‌های رمزنگاری، با ترکیب چهار مورد بالا قابل حصول می‌باشند.

این سرویس‌ها مفاهیم جامعی هستند و می‌توانند برای کاربردهای مختلف پیاده‌سازی و استفاده شوند. به عنوان مثال سرویس اصالت محتوا هم در معاملات تجاری اهمیت دارد و هم در مسائل نظامی و سیاسی مورد استفاده قرار می‌گیرد. برای ارائه کردن هر یک از سرویس‌های رمزنگاری، بسته به نوع کاربرد، از پروتکل‌های مختلف رمزنگاری استفاده می‌شود.





پروتکل رمزنگاری

به طور کلی، یک پروتکل رمزنگاری، مجموعه‌ای از قواعد و روابط ریاضی است که چگونگی ترکیب کردن الگوریتم‌های رمزنگاری و استفاده از آن‌ها به منظور ارائهٔ یک سرویس رمزنگاری خاص در یک کاربرد خاص را فراهم می‌سازد.

معمولاً یک پروتکل رمزنگاری مشخص می‌کند که

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

به عنوان مثال می‌توان به پروتکل تبادل کلید دیفی-هلمن∗ برای ایجاد و تبادل کلید رمز مشترک بین دو طرف اشاره نمود.





الگوریتم رمزنگاری

الگوریتم رمزنگاری، به هر الگوریتم یا تابع ریاضی گفته می‌شود که به علت دارا بودن خواص مورد نیاز در رمزنگاری، در پروتکل‌های رمزنگاری مورد استفاده قرار گیرد. اصطلاح الگوریتم رمزنگاری یک مفهوم جامع است و لازم نیست هر الگوریتم از این دسته، به طور مستقیم برای رمزگذاری اطلاعات مورد استفاده قرار گیرد، بلکه صرفاً وجود کاربرد مربوط به رمزنگاری مد نظر است.

در گذشته سازمان‌ها و شرکت‌هایی که نیاز به رمزگذاری یا سرویس‌های دیگر رمزنگاری داشتند، الگوریتم رمزنگاری منحصربه‌فردی را طراحی می‌نمودند. به مرور زمان مشخص گردید که گاهی ضعف‌های امنیتی بزرگی در این الگوریتم‌ها وجود دارد که موجب سهولت شکسته شدن رمز می‌شود. به همین دلیل امروزه رمزنگاری مبتنی بر پنهان نگاه داشتن الگوریتم رمزنگاری منسوخ شده‌است و در روش‌های جدید رمزنگاری، فرض بر این است که اطلاعات کامل الگوریتم رمزنگاری منتشر شده‌است و آنچه پنهان است فقط کلید رمز است.

بنا بر این تمام امنیت حاصل شده از الگوریتم‌ها و پروتکل‌های رمزنگاری استاندارد، متکی به امنیت و پنهان ماندن کلید رمز است و جزئیات کامل این الگوریتم‌ها و پروتکل‌ها برای عموم منتشر می‌گردد.

بر مبنای تعریف فوق، توابع و الگوریتم‌های مورد استفاده در رمزنگاری به دسته‌های کلی زیر تقسیم می‌شوند:

توابع بدون کلید
توابع درهم‌ساز∗
تبدیل‌های یک‌طرفه∗
توابع مبتنی بر کلید
الگوریتم‌های کلید متقارن
الگوریتم‌های رمز قالبی
الگوریتم‌های رمز دنباله‌ای
توابع تصدیق پیام∗
الگوریتم‌های کلید نامتقارن
الگوریتم‌های مبتنی بر تجزیهٔ اعداد صحیح
الگوریتم‌های مبتنی بر لگاریتم گسسته
الگوریتم‌های مبتنی بر منحنی‌های بیضوی
الگوریتم‌های امضای رقومی∗

الگوریتمهای رمزنگاری بسیار متعدد هستند، اما تنها تعداد اندکی از آن‌ها به صورت استاندارد درآمده‌اند.





رمزنگاری کلید متقارن

رمزنگاری کلید متقارن∗ یا تک کلیدی، به آن دسته از الگوریتم‌ها، پروتکل‌ها و سیستم‌های رمزنگاری گفته می‌شود که در آن هر دو طرف رد و بدل اطلاعات از یک کلید رمز یکسان برای عملیات رمزگذاری و رمزگشایی استفاده می‌کنند. در این قبیل سیستم‌ها، یا کلیدهای رمزگذاری و رمزگشایی یکسان هستند و یا با رابطه‌ای بسیار ساده از یکدیگر قابل استخراج می‌باشند و رمزگذاری و رمزگشایی اطلاعات نیز دو فرایند معکوس یکدیگر می‌باشند.

واضح است که در این نوع از رمزنگاری، باید یک کلید رمز مشترک بین دو طرف تعریف گردد. چون کلید رمز باید کاملاً محرمانه باقی بماند، برای ایجاد و رد و بدل کلید رمز مشترک باید از کانال امن استفاده نمود یا از روش‌های رمزنگاری نامتقارن استفاده کرد. نیاز به وجود یک کلید رمز به ازای هر دو نفرِ درگیر در رمزنگاری متقارن، موجب بروز مشکلاتی در مدیریت کلیدهای رمز می‌گردد.




رمزنگاری کلید نامتقارن

رمزنگاری کلید نامتقارن∗، در ابتدا با هدف حل مشکل انتقال کلید در روش متقارن و در قالب پروتکل تبادل کلید دیفی-هلمن پیشنهاد شد. در این نوع از رمزنگاری، به جای یک کلید مشترک، از یک زوج کلید به نام‌های کلید عمومی و کلید خصوصی استفاده می‌شود. کلید خصوصی تنها در اختیار دارندهٔ آن قرار دارد و امنیت رمزنگاری به محرمانه بودن کلید خصوصی بستگی دارد. کلید عمومی در اختیار کلیهٔ کسانی که با دارندهٔ آن در ارتباط هستند قرار داده می‌شود.

به مرور زمان، به غیر از حل مشکل انتقال کلید در روش متقارن، کاربردهای متعددی برای این نوع از رمزنگاری مطرح گردیده‌است. در سیستم‌های رمزنگاری نامتقارن، بسته به کاربرد و پروتکل مورد نظر، گاهی از کلید عمومی برای رمزگذاری و از کلید خصوصی برای رمزگشایی استفاده می‌شود و گاهی نیز، بر عکس، کلید خصوصی برای رمزگذاری و کلید عمومی برای رمزگشایی به کار می‌رود.

دو کلید عمومی و خصوصی با یکدیگر متفاوت هستند و با استفاده از روابط خاص ریاضی محاسبه می‌گردند. رابطهٔ ریاضی بین این دو کلید به گونه‌ای است که کشف کلید خصوصی با در اختیار داشتن کلید عمومی، عملاً ناممکن است.




مقایسه رمزنگاری کلید متقارن و کلید نامتقارن

اصولاً رمزنگاری کلید متقارن و کلید نامتقارن دارای دو ماهیت متفاوت هستند و کاربردهای متفاوتی نیز دارند. بنا بر این مقایسهٔ این دو نوع رمزنگاری بدون توجه به کاربرد و سیستم مورد نظر کار دقیقی نخواهد بود. اما اگر معیار مقایسه، به طور خاص، حجم و زمان محاسبات مورد نیاز باشد، باید گفت که با در نظر گرفتن مقیاس امنیتی معادل، الگوریتم‌های رمزنگاری متقارن خیلی سریع‌تر از الگوریتم‌های رمزنگاری نامتقارن می‌باشند.



تجزیه و تحلیل رمز

تجزیه و تحلیل رمز∗ یا شکستن رمز، به کلیهٔ اقدامات مبتنی بر اصول ریاضی و علمی اطلاق می‌گردد که هدف آن از بین بردن امنیت رمزنگاری و در نهایت بازکردن رمز و دستیابی به اطلاعات اصلی باشد. در تجزیه و تحلیل رمز، سعی می‌شود تا با بررسی جزئیات مربوط به الگوریتم رمز و یا پروتکل رمزنگاری مورد استفاده و به کار گرفتن هرگونه اطلاعات جانبی موجود، ضعف‌های امنیتی احتمالی موجود در سیستم رمزنگاری یافته شود و از این طریق به نحوی کلید رمز به دست آمده و یا محتوای اطلاعات رمز شده استخراج گردد.

تجزیه و تحلیل رمز، گاهی به منظور شکستن امنیت یک سیستم رمزنگاری و به عنوان خرابکاری و یک فعالیت ضد امنیتی انجام می‌شود و گاهی هم به منظور ارزیابی یک پروتکل یا الگوریتم رمزنگاری و برای کشف ضعف‌ها و آسیب‌پذیری‌های احتمالی آن صورت می‌پذیرد. به همین دلیل، تجزیه و تحلیل رمز، ذاتاً یک فعالیت خصومت‌آمیز به حساب نمی‌آید؛ اما معمولاً قسمت ارزیابی و کشف آسیب‌پذیری را به عنوان جزئی از عملیات لازم و ضروری در هنگام طراحی الگوریتم‌ها و پروتکل‌های جدید به حساب می‌آورند و در نتیجه تجزیه و تحلیل رمز بیشتر فعالیت‌های خرابکارانه و ضد امنیتی را به ذهن متبادر می‌سازد. با توجه به همین مطلب از اصطلاح حملات تحلیل رمز∗ برای اشاره به چنین فعالیت‌هایی استفاده می‌شود.

تحلیل رمز، در اصل اشاره به بررسی ریاضی الگوریتم (یا پروتکل) و کشف ضعف‌های احتمالی آن دارد؛ اما در خیلی از موارد فعالیت خرابکارانه، به جای اصول و مبنای ریاضی، به بررسی یک پیاده‌سازی خاص آن الگوریتم (یا پروتکل) در یک کاربرد خاص می‌پردازد و با استفاده از امکانات مختلف سعی در شکستن رمز و یافتن کلید رمز می‌نماید. به این دسته از اقدامات خرابکارانه، حملات جانبی∗ گفته می‌شود.





رمزهای جانشینی

در رمز نگاری جانشینی هر حرف یا گروهی از حروف بایک حرف یا گروهی دیگراز حروف جابجا می‌شوند تا شکل پیام بهم بریزد. یکی از قدیمی‌ترین رمزهای شناخته شده روش رمز نگاری سزار است که ابداع آن به ژولیوس سزار نسبت داده می‌شود. در این روش حرف a به d تبدیل می‌شود bبه c، e به fوبه همین ترتیب تاz که با حروفc جایگزین می‌شوند.




افزونگی

اولین اصل آن است که تمام پیامهای رمز شده بایدشامل مقداری«افزونگی»[داده‌های زائد]باشندبه عبارت دیگر لزومی ندارد که اطلاعات واقعی به همان گونه که هستند رمز و ارسال شوند. یک مثال می‌تواند به فهم دلیل این نیاز کمک کند. فرض کنید یک شرکت به نام TCP با۶۰۰۰۰کالااز طریق سیستم پست الکترونیکی سفارش خرید می‌پذیرد. برنامه نویسان شرکت TCP به خیال آن که برنامه‌های موثر و کار آمدی می‌نویسند پیامهای سفارش کالا را مشتمل بر ۱۶بایت نام مشتری و به دنبال آن سه بایت فیلد داده (شامل یک بایت برای تعدادکالا ودو بایت برای شمارهٔ کالا)در نظر می‌گیرد که سه بایت آخر توسط یک کلید بسیار طولانی رمزنگاری می‌شود واین کلید را فقط مشتری و شرکت TCP می‌داند.




تازگی پیامها

دومین اصل اساسی در رمزنگاری آن است که باید محاسباتی صورت بگیرد تا مطمئن شویم هرپیام دریافتی تازه و جدید است یا به عبارتی اخیراً فرستاده شده‌است این بررسی برای جلوگیری از ارسال مجدد پیام‌های قدیمی توسط یک اخلالگر فعّال الزامی است اگر چنین بررسی‌هایی انجام نشود کارمند اخراجی ما قادر است با ایجاد یک انشعاب مخفی از خط تلفن پیام‌های معتبری را که قبلاً ارسال شده مکرراً ارسال نماید، حتی اگر نداند محتوای ان چیست.




راهکاری برای ایجاد تازگی پیام

یک چنین محاسبه‌ای را می‌توان با قرار دادن یک مهر زمان در پیام‌ها پیش بینی کرد به نحوی که پیام‌ها مثلاً برای ده ثانیه معتبر باشد گیرندهٔ پیام می‌تواند آن را برای حدود ده ثانیه نگه دارد تا بتواند پیام‌های جدید را با آن مقایسه کرده و نسخه‌های تکراری را که دارای مهر زمان هستند به عنوان پیام‌های قدیمی شناخته و حذف خواهند شد.




رمزنگاری به صورت سخت‌افزاری

الگوریتم‌های رمزنگاری رامی توان هم به صورت سخت‌افزاری(به منظورسرعت بالاتر) وهم به صورت نرم‌افزاری (برای انعطاف پذیری بیشتر) پیاده سازی کرد روشهای جانشینی وجایگشتی می‌توانند با یک مدار سادهٔ الکترونیکی پیاده سازی شوند. p-box ابزاری است که برای جایگشت بیتهای یک ورودی هشت بیتی کاربرد دارد. بود با سیم بندی و برنامه ریزی درونی این p-box قادراست هر گونه جایگشت بیتی راعملاً با سرعتی نزدیک به سرعت نور انجام بدهد چرا که هیچ گونه محاسبه‌ای لازم نیست وفقط تأخیر انتشار سیگنال وجود دارد. این طراحی از اصل کرکهف تبعیت می‌کند یعنی:حمله کننده از روش عمومی جایگشت بیت‌ها مطلّع است آن چه که او از آن خبر ندارد آن است که کدام بیت به کدام بیت نگاشته می‌شود کلید رمز همین است.




برخی اصطلاحات

در لیست زیر با توجه به ارتباط مستقیم علم رمزنگاری یا همان Cryptography به برخی از اصطلاحات که در بحث امنیت شبکه و کامپیوتر وجود دارند اشاره شده‌است.




Encryption

در علم cryptography به پنهان سازی اطلاعات گفته می‌شود.




Decryption

معکوس encryption است و در crypto به آشکار سازی اطلاعات پنهان شده گفته می‌شود.

== Plain text متن اولیه که رمز نشده است را plain text گویند




Cipher

به روشی برای تبدیل plain text به متنی که معنای آن پنهان باشد cipher گفته می‌شود.




Cryptanalysis

به هنر شکستن متون cipher شده گفته می‌شود.




Intruder

در لغت به معنای مزاحم است ولی در اینجا به معنای کسی است که یک کپی از cipher text دارد و تمایل به شکستن رمز دارد. منظور از شکستن رمز یعنی decrypt کردن آن متن که خود دو نوع است activeintruder که می‌تواند اطلاعات را روی خط عوض کند و تغییر دهد و passive intruder که فقط می‌تواند اطلاعات روی خط را داشته باشد و قابلیت تغییر آنها را ندارد.



Protocol

به روش و یا قرار دادی که بین دو یا چند نفر برای تبادل اطلاعات گذاشته می‌شود گفته می‌شود.
Intrusion Points

نقاطی که یک نفوذگر بتواند به اطلاعات با ارزش دست پیدا کند.





Internal Access Point

به سیستم‌هایی گویند که در اتاق یا در شبکه داخلی مستقرند و هیچ امنیتی (LocalSecurity) روی آنها تنظیم نشده باشد و احتمال حمله به آنها وجود دارد.




External Access Point

تجهیزاتی که ما را به شبکه خارجی مانند اینترنت متصل می‌کنند یا Applicationهایی که از طریق اینترنت کار می‌کنند و احتمال حمله به آنها وجود دارد.




Attack

هر چیزی که مکانیزم امنیت سیستم شما را دور زده و باعث تخریب گردد را حمله یا Attack گویند. از انواع حمله می‌توان به موارد زیر اشاره کرد:




DoS
DDoS
Spoofing (مانند MAC Spoofing، IP Spoofing و Web Spoofing)
Man-in-the-Middle
Password Guessing





Key

به اطلاعاتی گفته می‌شود که با استفاده از آن بتوان cipher text (متنی که cipher شده) را به plain text تبدیل کرد.(یا برعکس) به عبارت ساده یک متن رمز شده توسط یک Key با الگوریتم مناسب، به متن ساده تبدیل می‌شود.
page1 - page2 - page3 - page4 - page5 - page7 - page8 - | 4:41 pm
خط مشی جاوا

یکی از ویژگی‌های جاوا قابل حمل بودن آن است. یعنی برنامهٔ نوشته شده به زبان جاوا باید به طور مشابهی در کامپیوترهای مختلف با سخت‌افزارهای متفاوت اجرا شود. و باید این توانایی را داشته باشد که برنامه یک بار نوشته شود، یک بار کامپایل شود و در همه کامپیوترها اجرا گردد. به این صورت که کد کامپایل شدهٔ جاوا را ذخیره می‌کند، اما نه به‌صورت کد ماشین بلکه به‌صورت بایت‌کد جاوا. دستورالعمل‌ها شبیه کد ماشین هستند، اما با ماشین‌های مجازی که به طور خاص برای سخت‌افزارهای مختلف نوشته شده‌اند، اجرا می‌شوند. در نهایت کاربر از سکوی جاوا نصب شده روی ماشین خود یا مرورگر وب استفاده می‌کند. کتابخانه‌های استاندارد یک راه عمومی برای دسترسی به ویژگی‌های خاص فراهم می‌کنند. مانند گرافیک، نخ‌کشی و شبکه. در بعضی از نسخه‌های ماشین مجازی جاوا، بایت‌کدها می‌توانند قبل و در زمان اجرای برنامه به کدهای محلی کامپایل شوند. فایدهٔ اصلی استفاده از بایت‌کد، قسمت کردن است. اما ترجمهٔ کلی یعنی برنامه‌های ترجمه شده تقریباً همیشه کندتر از برنامه‌های کامپایل شدهٔ محلی اجرا می‌شوند. این شکاف می‌تواند با چند تکنیک خوش‌بینانه که در کاربردهای 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 نمایش داده می‌شود.
 
ساعت : 4:41 pm | نویسنده : admin | مطلب قبلی | مطلب بعدی
جاوا | next page | next page