সবচেয়ে জনপ্রিয় প্রোগ্রামিং ল্যাঙ্গুয়েজ হচ্ছে জাভা প্রোগ্রামিং। এটি একটি পূর্ণাঙ্গ অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজ। এর জনপ্রিয়তার অনেকগুলো কারণের মধ্যে একটি প্রধান কারণ হচ্ছে Portability বা বহনযোগ্যতা, এর অর্থ হচ্ছে একই কোড যে কোনো প্লাটফর্মে কাজ করে। এন্টারপ্রাইজ লেভেলের সফটওয়্যার তৈরি করতে জাভা ব্যবহৃত হয়। এ ছাড়া অ্যান্ড্রয়েড অ্যাপ তৈরি করতেও জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহৃত হয়।
জাভা প্রোগ্রামিং ভাষার ইতিহাস
কম্পিউটার আবিষ্কারের শুরু থেকে প্রোগ্রামিং এর বিভিন্ন পদ্ধতির প্রচলন ছিল। যেমন-
- মডুলার প্রোগ্রামিং (Modular programming)
- টপ ডাউন প্রোগ্রামিং (Top-down programming)
- বটম আপ প্রোগ্রামিং (Bottom up programming) ও
- স্ট্রাকচার্ড প্রোগ্রামিং (Structured programming) ইত্যাদি।
এসব পদ্ধতিগুলো তখনকার সময় ও চাহিদার প্রেক্ষিতে বেশ জনপ্রিয়ও ছিল। বিশেষত তুলনামূলক সহজ উপায়ে অপেক্ষাকৃত জটিল জটিল সমস্যার সমাধানে স্ট্রাকচার্ড প্রোগ্রামিং এর ব্যবহার ছিল খুবই গুরুত্বপূর্ণ।
কিন্তু প্রযুক্তিগত উন্নয়ন ও চাহিদার কারণে এক সময়ে এসে সম্পূর্ণ ত্রুটিমুক্ত, সহজে রক্ষণাবেক্ষণযোগ্য ও পুনরায় ব্যবহারযোগ্য (Reusable) প্রোগ্রাম তৈরিতে সনাতন পদ্ধতিগুলো খুব বেশি কার্যকরী ভূমিকা পালন করতে পারছিল না।
আর এসব সীমাবদ্ধতাকে অতিক্রম করার জন্যই নতুন ও যুগোপযোগী “অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং” এর আগমন। সিমুলা ৬৭ (Simula 67) হলো প্রথম অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং ল্যাংগুয়েজ, যা ১৯৬০ সালে বাজারে আসে। এরপর আসে ভিএইচডিএল (VHDL)।

পরবর্তীতে ১৯৮০ সালে যুক্তরাষ্ট্রের এটিএন্ডটি বেল ল্যাবরেটরি (AT&T, Bell laboratory) ও জর্ন স্ট্রাউসট্রাপ (Bjarne Stroustrup) এর যৌথ উদ্যোগে সি ভাষার প্রধান প্রধান বৈশিষ্ট্যের সাথে সিমলা ৬৭ ভাষার ক্লাস (Class) ধারণার সমন্বয়ে এক নতুন ভাষার জন্ম হয়- সি উইথ ক্লাস (C with class)।
পরবর্তীতে একে মডিফাই করে ১৯৮৩ সালে নামকরণ করা হয় সি++ (C++), যা একটি জনপ্রিয় অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং ল্যাংগুয়েজ। কিন্তু সি’ ভাষারও কিছু সীমাবদ্ধতা (Limitations) ছিল। যেমন- ইউজার ফ্রেন্ডলি না হওয়া, বিশ্বস্ততা (Reliability) ও পোর্টেবিলিটি (Portability) ইত্যাদি। এসব অসুবিধার জন্য প্রোগ্রামারগণ একটি পূর্ণাঙ্গ অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং ল্যাংগুয়েজ ডেভেলপ করার ক্ষেত্রে মনোযোগী হন।

ফলশ্রুতিতে ১৯৯১ সালে ‘Sun Microsystems‘ কোম্পানির গবেষক James Gosling এর নেতৃত্বে একদল প্রোগ্রামার ‘Green’ প্রজেক্টের আওতায় সি ভাষার উপর ভিত্তি করে ‘Consumer electronic device’ এ ব্যবহার উপযোগী প্ল্যাটফর্ম ইনডিপেন্ডেন্ট (Platform independent) একটি ছোটোখাটো প্রোগ্রামিং ল্যাংগুয়েজ ডেভেলপ করার গবেষণা শুরু করেন এবং তারা একটি নতুন ভাষা উদ্ভাবন করেন যার নাম দেন ‘Oak‘।
সম্ভবত Janes Gosling এর অফিস রুমের জানালার ধারে বিদ্যমান ‘Oak’ গাছটির কথা চিন্তা করেই এরূপ নামকরণ করে থাকবেন। কিন্তু ‘Oak’ নামের আরো একটি ল্যাংগুয়েজ বাজারে থাকায় এর নাম পরিবর্তন করে দেন জাভা (Java) এবং তা ১৯৯৪ সাল পর্যন্ত নানাভাবে মার্কেটিং এর চেষ্টা করেন। কিন্তু তাদের সে চেষ্টা ব্যর্থ হয়।
ইতিমধ্যে ইন্টারনেট ভিত্তিক ওয়ার্ল্ড ওয়াইড ওয়েব (World wide web-www) সিস্টেমের ব্যাপক প্রসার ঘটতে শুরু করে এবং এর জন্য ‘mosaic‘ নামে একটি অ-বাণিজ্যিক ব্রাউজার (Browser) ব্যবহার করা হতো। ‘Sun microsystems’ এর প্রোগ্রামারগণ তখন ল্যাংগুয়েজ হিসেবে জাভার ক্ষমতা প্রদর্শনের লক্ষ্যে জাভা ভাষা ব্যবহার করেই জাভা ভার্চুয়্যাল মেশিন বা ‘JVM’ ব্যবস্থা সমৃদ্ধ ‘Hot Java’ নামে একটি ব্রাউজার নির্মাণ করলেন। ১৯৯৫ সালের ২৩ মে তারিখে এটি ‘Sunworld’ নামক অনলাইন ম্যাগাজিনে প্রথম রিলিজ করেন।
ব্রাউজার হিসেবে জাভা সফল হওয়ায় ১৯৯৫ সালেই Netscape এবং পরবর্তীতে IBM, Symantec, Inprise এমনকি Microsoft সহ বহু প্রতিষ্ঠান তাদের ব্রাউজারে জাভা ব্যবহার করা শুরু করেন। তাই জাভাকে সি এর ইন্টারনেট ভার্সনও বলে।
১৯৯৬ সালে জাভার প্রথম ভার্সন প্রকাশিত হয়। প্রথম ভার্সন প্রকাশের কয়েক মাস পরই পরবর্তী ভার্সন (1.02) প্রকাশিত হয়। পরবর্তীতে বড় বড় মাপের প্রোগ্রাম লেখার সুবিধা নিয়ে লাইব্রেরি ফাংশনসমৃদ্ধ ভার্সন (1.1) প্রকাশিত হয়। সময়ের ধারাবাহিকতায় 1.1 ভার্সনের তুলনায় • উন্নততর এবং অনেক বেশি বিল্ট ইন ক্লাস সমৃদ্ধ ভার্সন 1.2 প্রকাশিত হয় ১৯৯৮ সালে।
ভার্সনটি রিলিজ হওয়ার মাত্র তিন দিন পরেই এর নামকরণ করা হয় Java 2। Java 2 রিলিজ হওয়ার পরবর্তী সময়ে জাভার আরো কয়েকটি ভার্সন (JDK 1.3, JDK 1.4, JDK 1.5) ইত্যাদি পর্যায়ক্রমে প্রকাশিত হয়। জাভার সর্বশেষ ভার্সন হচ্ছে JDK 22।

জাভা প্রোগ্রামিং ভাষার বৈশিষ্ট্য
জাভা ডেভেলপারগণ চেয়েছিলেন প্রচলিত প্রসিডিউর ও অবজেক্ট অরিয়েন্টেড প্রোগ্রাম পদ্ধতির সমস্যাগুলো কাটিয়ে জাভাকে একটি সহজ, সাবলীল, বিশ্বস্ত, পোর্টেবল ও গ্রহণযোগ্য অবজেক্ট অরিয়েন্টেড প্রোগ্রাম ভাষায় পরিণত করতে। Java’র নির্মাতাগণ তাদের এই language এর design এবং লক্ষ্য ও উদ্দেশ্য ব্যাখ্যা করার জন্য ১০টি buzzword সমৃদ্ধ একটি শ্বেতপত্র প্রকাশ করেন। এগুলোই জাভার বৈশিষ্ট্য। বৈশিষ্ট্যগুলো হচ্ছে-
(i) অবজেক্ট অরিয়েন্টেড’ (Object Oriented)
(ii) কম্পাইন্ড ও ইন্টারপ্রেটেড
(iii) প্লাটফরম অনির্ভরশীলতা (Platform Independent)
(iv) পোর্টেবল (Portable)
(v) উচ্চ ক্ষমতাসম্পন্ন (Highly Efficient)
(vi) সহজ, সাবলীল ও ছোট
(vii) শক্তিশালী ও নিরাপদ (Robust and Secure)
(viii) গতিশীল ও সম্প্রসারণযোগ্য (Dynamic and Extensible)
(ix) ডিস্ট্রিবিউটেড (Distributed) ও
(x) মাল্টিথ্রেডেড (Multithreaded)।
অবজেক্ট অরিয়েন্টেড (Object oriented)

জাভা একটি সত্যিকার অবজেক্ট অরিয়েন্টেড প্রোগ্রাম ভাষা। সুতরাং এর সবকিছুই ক্লাস, মেথড ও অবজেক্ট নিয়ন্ত্রিত। অর্থাৎ প্রোগ্রামের নির্বাহযোগ্য সকল স্টেটমেন্ট ক্লাসের মধ্যে লেখা হয়। ইনহেরিটেন্স প্রক্রিয়ায় প্রয়োজনে পুরাতন এক বা একাধিক ক্লাসের বৈশিষ্ট্যর আলোকে নতুন নতুন ক্লাস তৈরি করা যায়। এ প্রক্রিয়ায় এক ক্লাস বা অবজেক্টের বৈশিষ্ট্য অপর ক্লাস বা অবজেক্টে স্থানান্তরিত হয়।
জাভা প্যাকেজে বিপুল সংখ্যক ক্লাসের সমাবেশ ঘটানো যায়। Object Oriented design মূলত প্রোগ্রাম রচনার একটি টেকনিক। যে ল্যাংগুয়েজের মাধ্যমে এই পদ্ধতিতে প্রোগ্রাম লেখা হবে সেই ল্যাঙ্গুয়েজকে অবশ্যই OOP সাপোর্ট করতে হবে।
Java সম্পূর্ণরূপে OOP সাপোর্ট করে। Polymorphism, Inheritance এবং Encapsulation সহ একটি OOP language এর যা কিছু গুণাগুণ থাকা প্রয়োজন তার সবকিছুই জাভাতে আছে। সুতরাং জাভাকে নির্দ্বিধায় বলা যায় এটি Object oriented language ।
কম্পাইন্ড ও ইন্টারপ্রেটেড

প্রোগ্রাম ভাষাগুলো সাধারণত কম্পাইলার অথবা ইন্টারপ্রিটার অনুবাদিত হয়। কম্পাইলার অনুবাদিত প্রোগ্রাম ভাষাগুলো মেশিন নির্ভর হয়, অর্থাৎ এক ধরনের মেশিন ও অপারেটিং সিস্টেম কর্তৃক অনুবাদিত প্রোগ্রাম ভিন্ন ধরনের মেশিন ও অপারেটিং সিস্টেমে রান করে না।
কিন্তু জাভা কম্পাইলার ও ইন্টারপ্রেটার উভয় কর্তৃক অনুবাদযোগ্য। এজন্য জাভাকে একটি দ্বি-পর্যায় (Two-stage) বিশিষ্ট প্রোগ্রাম ভাষা বলা হয়। প্রথম পর্যায়ে সোর্স প্রোগ্রাম কম্পাইলার কর্তৃক অনুবাদিত হয়ে বাইটকোডে (Bytecode) রূপান্তরিত হয়।
দ্বিতীয় পর্যায়ে জাভা ইন্টারপ্রিটার কর্তৃক জাভা প্রোগ্রাম ব্যবহারকারী মেশিনের বোধগম্য মেশিনকোডে পরিণত হয়। এজন্য জাভাকে কম্পাইলার এবং ইন্টারপ্রিটার উভয় কর্তৃক অনুবাদিত একটি যন্ত্র নিরপেক্ষ প্রোগ্রাম ভাষা বলা হয়।
প্লাটফরম অনির্ভরশীলতা (Platform independent)
জাভা ভাষার সবচেয়ে আকর্ষণীয় এবং অন্যতম বৈশিষ্ট্য হলো এর প্লাটফরম অনির্ভরশীলতা। জাভা কোনো নির্দিষ্ট হার্ডওয়্যার, সফ্টওয়্যার ও অপারেটিং সিস্টেম নির্ভরশীল প্রোগ্রাম ভাষা নয়। অর্থাৎ এক ধরনের মেশিনে কম্পাইল এবং নির্বাহ করা জাভা প্রোগ্রাম সহজেই অন্য ধরনের মেশিনে নির্বাহ করা যায়।
মূলত জাভা কম্পাইলার যে বাইটকোড তৈরি করে তা যে-কোনো হার্ডওয়্যার, সফ্টওয়্যার ও অপারেটিং সিস্টেম বিশিষ্ট কম্পিউটারে নির্বাহযোগ্য।
আবার প্রিমিটিভ ডাটা টাইপগুলোর সাইজও মেশিন নির্ভর নয়। অর্থাৎ সি++ এ যেমন int টাইপের জন্য কখনো ২ বাইট আবার কখনো ৪ বাইট (মডিফায়ার ব্যবহার করলে) মেমরি বরাদ্দ হয়, কিন্তু জাভায় int টাইপের জন্য সর্বদাই ৪ বাইট মেমরি বরাদ্দ হয়। উভয় কারণে জাভা কোনো নির্দিষ্ট প্লাটফরম নির্ভরশীল প্রোগ্রাম ভাষা নয়।
পোর্টেবল (Portable)

জাভা ভাষার অপর একটি আকর্ষণীয় বৈশিষ্ট্য হলো এর পোর্টেবিলিটি। জাভা কোনো নির্দিষ্ট প্লাটফরম নির্ভর প্রোগ্রাম ভাষা না হওয়ায় এক মেশিনে কম্পাইল এবং নির্বাহ করা জাভা প্রোগ্রাম সহজেই অন্য মেশিনে নির্বাহ করা যায়।
এজন্য ব্রাউজিং প্রক্রিয়ায় লোকাল (স্থানীয়) কম্পিউটার থেকে রিমোট (দূরবর্তী) কম্পিউটারে রক্ষিত জাভা প্রোগ্রাম নির্বাহ করা যায় কিংবা প্রয়োজনে ডাউনলোড করে ব্যবহার করা যায়। মূলত এরূপ বৈশিষ্ট্যই জাভাকে সার্বজনীন গ্রহণযোগ্য নেটওয়ার্ক প্রোগ্রাম ভাষায় পরিণত করেছে।

উচ্চ ক্ষমতাসম্পন্ন (Highly efficient)
যদিও জাভা প্রোগ্রাম অনুবাদে ইন্টারপ্রিটারের ব্যবহার অনেকটা সেকেলে মনে হয়। কিন্তু প্রাথমিক পর্যায়ে কম্পাইলার কর্তৃক জাভা সোর্স প্রোগ্রাম অনুবাদিত হয়ে যে বাইটকোডে (bytecode) রূপান্তরিত হয় তা নির্দিষ্ট কোনো মেশিন নির্ভর না হওয়ায় পরবর্তী পর্যায়ে ইন্টারপ্রিটারের ব্যবহার জাভা রান-টাইম সিস্টেমের গতি বাড়িয়ে দিয়েছে বহুগুণে।
আর রান-টাইম সিস্টেমের অতিরিক্ত সময় হ্রাসের বিষয়টি লক্ষ্য রেখেই জাভা আর্কিটেকচার গঠিত হয়েছে। সান কর্পোরেশনের মতে, সি ও সি এর তুলনায় জাভা অতি উচ্চ ক্ষমতাসম্পন্ন। তা ছাড়া প্যাকেজ, মাল্টিগ্রেড প্রভৃতি বিষয়ের সমাহার জাভা ভাষার ক্ষমতা বাড়িয়ে দিয়েছে বহুগুণে।
সহজ, সাবলীল ও ছোট
জাভা সহজ, সরল, সাবলীল ও ছোট্ট একটি প্রোগ্রাম ভাষা। জাভা প্রোগ্রাম কৌশল অনেকটা সি এবং সি++ এর মতো। উপরন্তু সি ও সি++ এর অনেক জটিল বিষয় (যেমন- পয়েন্টার, অপারেটর ওভারলোডিং, মাল্টিপল ইনহেরিটেন্স ইত্যাদি) জাভায় বাদ দেওয়া কিংবা অনেক ক্ষেত্রে এগুলোর বিকল্প ব্যবস্থা রাখা হয়েছে। আবার জাভায় সি ও সি++ অনুমোদন করে না এরূপ অনেক বৈশিষ্ট্য (যেমন- লেবেলযুক্ত continue ও goto স্টেটমেন্ট, প্যাকেজ, মাল্টিথ্রেড ও অ্যাপলেট ইত্যাদি) সংযোজন করা হয়েছে।
উভয় কারণে জাভা সর্বজন স্বীকৃত একটি সহজ, সরল, সাবলীল ও ছোট্ট প্রোগ্রাম ভাষা হিসেবে পরিচিতি পেয়েছে। তবে জাভা কম্পাইলার তুলনামূলকভাবে ছোট হলেও এর পরিধি এবং কার্যক্ষমতা অতি বিশাল ও ব্যাপক। জাভা প্রোগ্রাম কোড দেখতেও অনেকটা সি++ এর মত, এজন্য জাভাকে সি++ এর সরল সংস্করণ বলা হয়।
শক্তিশালী ও নিরাপদ (Robust and secure)

জাভা একটি শক্তিশালী ও নিরাপদ প্রোগ্রাম ভাষা। জাভায় সংযোজিত হয়েছে এমন কতগুলো বৈশিষ্ট্য যেগুলো বিভিন্নভাবে প্রোগ্রাম কোড ও রান-টাইম সিস্টেমকে নিরাপদ রাখতে সক্ষম।
যেমন- জাভা কম্পাইল টাইম এবং রান- টাইম উভয় পর্যায়ে ডাটা টাইপ পরীক্ষা করে, এর গারবেজ কালেক্টর স্বয়ংক্রিয়ভাবে সিস্টেমের মেমরি ব্যবস্থাপনা সম্পর্কিত যাবতীয় সমস্যার মোকাবিলা করে, জাভা পুরোপুরিভাবে এক্সেপশন হ্যান্ডলিং (exception handling)প্রক্রিয়ার সাথে একত্রীভূত যা ধারাবাহিকভাবে প্রোগ্রামের এরর হস্তক্ষেপপূর্বক প্রোগ্রাম ও সিস্টেমকে নিরাপদ রাখে ইত্যাদি।
নেটওয়ার্ক ও ইন্টারনেটে ব্যবহারযোগ্য প্রোগ্রাম ভাষা হওয়ায় জাভা অনাকাঙ্ক্ষিত ও অননুমোদিত ব্যবহারকারী ও কম্পিউটার ভাইরাস থেকে নিরাপদ থাকা আবশ্যক। মূলত এ কারণেই জাভায় পয়েন্টার ভেরিয়েবল ব্যবহার উহ্য রাখা হয়েছে। ফলে জাভা অবাঞ্ছিত মেমরি অ্যাক্সেস ও ভাইরাস থেকে নিরাপদ থাকে।
জাভার শুরু থেকেই Security বা নিরাপত্তা দিকটিতে এর নির্মাতাদের ছিল রিশেষ দৃষ্টি। এ ছাড়াও প্রতিনিয়ত এর Security bug গুলো খুঁজে বের করা হচ্ছে এবং bug গুলো সংশোধন করা হচ্ছে। এসব কারণে Java অন্য যে-কোনো Programming language এর তুলনায় অনেক বেশি Secure। Java তে রচিত Program সবসময়ই Virus-free এবং tamper-free ।
গতিশীল ও সম্প্রসারণযোগ্য (Dynamic and extensible)

জাভা একটি গতিশীল ভাষা যা স্বয়ংক্রিয়ভাবে নতুন নতুন ক্লাস, অবজেক্ট, মেথডের সাথে সংযুক্ত হতে সক্ষম। জাভা ইন্টারপ্রিটার প্রোগ্রাম নির্বাহকালীন সময়ে কোয়েরি (query) সম্পাদনের মাধ্যমে কাঙ্ক্ষিত ক্লাস, অবজেক্ট, মেথুড, থ্রেড ইত্যাদির সাথে সংযোগ স্থাপন কিংবা প্রয়োজনে সংযোগ বাতিল এমনকি প্রোগ্রাম নির্বাহ স্থগিত কিংবা বাতিল করতে সক্ষম।
উপরন্তু, জাভা রান-টাইম সিস্টেম স্বয়ংক্রিয়ভাবে নেটিভ ফাংশন (native function) এর সাথে সংযুক্ত হতে পারে, যা জাভাকে একটি জনার সম্প্রসারিত প্রোগ্রাম ভাষায় রূপদান করেছে। এ প্রক্রিয়ায় জাভা ভাষায় সি, সি++ এর মতো অন্যান্য প্রোগ্রাম ভাষায় লেখা কার্যকরী ফাংশন ব্যবহার করা যায়।
Interpreted language হিসেবে Java আসলেই একটি High performance language। যেহেতু জাভা একটি মধ্যবর্তী বাইট কোডকে ইন্টারপ্রিট করে কাজেই এর গতি অন্য যে-কোনো ইন্টারপ্রিটেড প্রোগ্রামের তুলনায় বেশি। তবে সি++ বা ভিজুয়্যাল বেসিক, মেশিন নির্ভর কম্পাইলড কোডে চলে বিধায় জাভার তুলনায় বেশি গতিসম্পন্ন।
ডিস্ট্রিবিউটেড (Distributed)
মূলত নেটওয়ার্ক সিস্টেমে ব্যবহারের উদ্দেশ্যে একটি ডিস্ট্রিবিউটেড প্রোগ্রাম ভাষা হিসেবে জাভার প্রসার ঘটে। জাভা প্রোগ্রাম একই সাথে স্থানীয় (লোকাল) এবং দূরবর্তী (রিমোট) কম্পিউটার থেকে ডাটা উকিতি এক্সেস করতে সক্ষম। ফলশ্রুতিতে বিভিন্ন স্থানে।
অবস্থিত একাধিক প্রোগ্রামার একটি সিঙ্গেল প্রজেক্ট প্রোগ্রামে সম্মিলিতভাবে কাজ করতে সক্ষম কোজাভার নেটওয়ার্কিং ক্ষমতা শক্তিশালী এবং সহজ। Socket connection open করার মতো নেটওয়ার্কিং-এর অনেক কাজ জাভাতে সহজে করা সম্ভব যা অন্য কোনো language এ সম্ভব নয়।
Servlets এর মাধ্যমে Server side processing অনেক বেশি দক্ষতার সাথে করা সম্ভব। ইদানীং অনেক জনপ্রিয় Web server ‘Servlets’ সাপোর্ট করে। এ ছাড়াও রিমোট মেথড ইনভোকেশন বা RMI পদ্ধতিতে distributed object এর মধ্যে যোগাযোগ সম্ভব।
মাল্টিব্রেডেড (Multithreaded)
জাভা একটি মাল্টিগ্রেডেড প্রোগ্রাম ভাষা যা একই সাথে একাধিক কার্য সম্পাদনে সক্ষম। এজন্য কোনো অ্যাপ্লিকেশন প্রোগ্রামে নতুন কোনো কার্য সম্পাদনের জন্য পূর্বে নির্দেশ দেয়া হয়েছে এমন কার্য সম্পাদনের জন্য অপেক্ষা করতে হয় না। জাভা মাল্টিথ্রেডিং সিস্টেমে একই সাথে একাধিক কার্য সম্পাদন করা যায়। যেমন- লোকাল সিস্টেমে গান শোনার পাশাপাশি একই সময়ে।

দূরবর্তী কম্পিউটার থেকে কিছু ডাউনলোড করা যায় কিংবা পূর্বে ডাউনলোড করা ফাইল সার্চ বা ভিউ করা যায়। এ প্রক্রিয়া অনেকটা মাল্টিটাস্কিং (multitasking) সিস্টেমের মতো। উইন্ডোজ এবং উইন্ডোজ ভিত্তিক অনেক অ্যাপ্লিকেশন মাল্টিটাস্কিং সিস্টেমের অন্তর্গত।
মাল্টিথ্রেড প্রক্রিয়ায় মূলত পারস্পরিক সক্রিয় দুই বা ততোধিক গ্রাফিক্যাল অ্যাপ্লিকেশন সিস্টেমের যুগপৎ নির্বাহ ক্ষমতা বহুগুণ বৃদ্ধি করেছে।