Concept of Multithreading



·    Java Threads :
  • thread जावा language की एक ऐसी facility है जो किसी single process में एक से अधिक activities को perform करने की अनुमति प्रदान करता है |
  • इन्हीं threads को light weight process के नाम से भी जाना जाता है |
  • किसी thread को executed statements की series भी कहा जा सकता है |
  • प्रत्येक thread अपना खुद का program counter, stack और लोकल variable रखता है |
  • एक thread method call का nested sequence होता है, जो memory, files और per-process state को share भी कर सकता है |

Need of threads or why do we use threads ?
  • किसी application या program के Asynchronous और background processing के लिए |
  • GUI applications के responce को बढ़ने के लिए |
  • Multi-processor systems का लाभ प्राप्त करने के लिए |
  • Multiple independent entities के होने पर उनके logic को सरल बनाने के लिए |

Thread Class :
        Thread class कुछ constructors और methods provide करता है, जिनका प्रयोग threads पर कुछ operations perform करने के लिए किया जाता है | यह thread class, Object class को inherit तथा Runnable interface को implement करता है |

सामान्यतः प्रयोग किये जाने वाले thread class के constructors :
  • Thread()
  • Thread(String name)
  • Thread(Runnable r)
  • Thread(Runnable r, String name)

सामान्यतः प्रयोग किये जाने वाले thread class के methods :




Java Tokens


Q. : What do you understand by Tokens ?

Ans. : Tokens किसी भी java program के सबसे छोटे unit होते हैं, जो compiler के द्वारा identify (पहचानना) किये जाते हैं | यह जावा program में use किया जाने वाला एक कोई भी character हो सकता है | ये tokens पांच प्रकार के होते हैं |



-: Literals :- 
जावा program में प्रयोग किये जाने वाले सभी constants (जैसे कोई number, text, या फिर कोई दूसरी information जो किसी value को प्रदर्शित करती हो) literals कहलाते हैं | किसी भी value को कुछ इस प्रकार से दर्शाया जा सकता है –





  • Integer Literals : सभी positive और negative numbers जो decimal वाले न हो integer literals कहे जाते हैं |
  • Floating Literals : वे numbers जो decimal वाले होते हैं उन्हें floating literals कहते हैं | java में दो प्रकार के floating literals होते हैं – float और double | floating literals by default double type के होते हैं | 0.1f floating point literal तथा 0.5d double-precision floating point literal है |
  • Character Literals : Character literals को single quotes ( ‘ ’ ) के अन्दर लिखा जाता है | इन्हें ASCII character भी कहते हैं | जैसे : ‘A’, ‘3’, ‘*’ etc.
  • String Literals : String alphanumeric characters का एक समूह होता है | String literals को double qoutes     ( “ ” ) के अन्दर लिखा जाता है | जैसे : “Hello”, “10 rupees”, “New Delhi”, etc.
  • Boolean Literals : boolean literals की केवल दो values हो सकती हैं, true या false | जावा program में किसी भी condition को check करने के लिए कि वह satisfy कर रहा है या नहीं | जैसे : boolean chosen=true; 



-: Keywords :- 
keywords कुछ reserve words होते हैं जो सभी programming भाषाओँ में किसी particular task के लिए बनाये गए होते हैं | कुछ keywords निम्नलिखित है –




-: Identifiers :-
किसी भी package, class, interface, method, या variable के नाम को identifier कहते हैं | इसी की सहायता से कोई भी programmer , program में प्रयोग होने वाले विभिन्न type के contents/members को पहचान लेता है और आसानी से use भी कर लेता है | इन identifiers को लिखने के लिए कुछ rules follow करने पड़ते हैं, जो निम्नलिखित हैं –

  • एक identifier alphabets (A to Z या a to z), digits (0 to 9), Currency Character ($) और underscore (_) का कोई भी combination हो सकता है |
  • किसी भी identifier का पहला character alphabet, currency character या underscore ही होना चाहिए | किसी भी दूसरे character से identifier start नहीं होना चाहिए |
  • Identifier में किसी भी प्रकार से commas या blanks allowed नहीं हैं |
  • सबसे महत्वपूर्ण बात यह है कि identifiers case-sensitive होते हैं |जैसे : sum और SUM दोनों अलग-अलग identifier हैं |
  • किसी भी identifier का नाम किसी keyword के नाम पर नहीं हो सकता है |


examples of identifiers : age, $salary, _value, _1_value |
not an identifier : 123abc, -salary, int, switch |   



-: Operators :-

किसी भी programming language में किसी भी प्रकार के operations जैसे : mathematical, logical, relational etc. आदि को perform करने के लिए कुछ विशेष प्रकार के symbol या symbols के समूह का प्रयोग किया जाता है जिन्हें  operators कहते हैं | ये सामान्यतः तीन प्रकार के होते हैं – unary, binary, ternary |

  • Unary Operators : ऐसे operator जो केवल एक ही operand पर apply किये जाते है, उन्हें unary operator कहते हैं | जैसे : Address operator (&), Indirectional operator (*), unary plus,minus(+,-), bitwise operator (~), unary increment/decrement operator (+/-), logical operator (!)
  • Binary Operators : ऐसे operators जो कम से कम दो operands पर apply किये जाते हैं, उन्हें binary operator कहते हैं | जैसे : arithmetic operator, relational operator, logical operator, assignment operator, bitwise operators, shift operators |
  • Ternary Operator : ऐसा operator जो तीन operands पर apply किया जाता है, उन्हें ternary operator कहते हैं |  जैसे : condition ? true statement : false statement ;


        z=(x==y) ? a : b;





Concepts of Object Oriented Programming

Q. What are the concepts of object oriented programming ?

Ans. : OOPs के कुछ concepts जो निम्नलिखित है –




Object : Real world की जितनी भी entities हैं उन्हें object कहा जाता है, अर्थात संसार में जितनी भी वस्तुएं पायी जाती हैं जिनके कुछ attributes (जैसे किसी भी चीज का name, उसका color, उसकी size, etc.) और behaviour (जैसे किसी भी वस्तु का कार्य (functinality) जैसे bike का start होना, उसके gear को बदलना)  उन्हें object कहा जाता है | यदि एक software development की नजर से देखा जाये तो –
यदि कोई bike बनाने वाली कंपनी है और वह अपने कंपनी के प्रोडक्ट्स के production और उसके लेन-देन के details को manage करने के लिए एक software बनवाना चाहता है | इस software को बनाने के लिए programmer इस कंपनी में बनने वाले प्रत्येक bike को एक object के रूप में मानता है | प्रत्येक bike का अपना name, model no., उसका color, etc. होता है जो उसके attributes कहलाते हैं, और इन्हें किसी software में implement करने के लिए variables का use किया जाता है जो इन सभी datas हो store करते हैं | इसी प्रकार datas को store, access, delete, और update करने के लिए कुछ methods (functions) बनाये जाते हैं जिन्हें behaviour कहते हैं |   

Class : साधारण भाषा में एक class objects का समूह होता है, जो एक ही प्रकार के गुणों को रखते हैं | दूसरे शब्दों में कहे तो class एक ही प्रकार के objects का समूह होता है, और प्रत्येक object के attributes और behaviour भी same होते हैं| जैसे Car, Truck, Bike, Cycle आदि Vehical class के objects हैं |

Encapsulation : data और methods को एक single unit (class) में इकठ्ठा करके रखने के process को encapsulation कहते हैं | OOPs में data और method एक साथ मिलकर एक single unit बनाते हैं जिसे class कहते हैं | किसी भी class के data को उस class के method के अतिरिक्त कहीं से भी access नहीं किया जा सकता है | अर्थात किसी भी class के data को केवल उस class के method ही access कर सकते हैं | इस प्रकार data को direct access से होने से बचाना ही data hiding कहलाता है |

Data Abstraction : abstraction एक ऐसा concept है, जिसके अनुसार किसी भी software के केवल essential (जरुरी) features ही user को दिखाए जाते हैं बाकी के unnecessary implementations को user से hide कर दिया जाता है | जैसे user किसी भी software के केवल user interface को ही देख और use कर पाता है, बाकी उस software की internal functionality को user न तो कभी देख पाता है और न ही समझ पाता है की वह कैसे बना है या फिर कैसे कार्य कर रहा है |

Inheritance : किसी एक class (child-class/sub-class) में किसी दूसरे class (parent-class/super-class) के सभी या कुछ properties (जैसे fields या method) को use करना ही inheritance कहलाता है |  इसी गुण के कारण ही एक class का object किसी दूसरे class के objects की properties को access कर सकता है | यह concept code reusability को बढ़ावा देता है |अर्थात किसी भी class में बिना modification किये ही उस class के गुणों को बढाया जा सकता है |


Polymorphism : इस concept के अनुसार किसी भी class में एक ही name के एक से अधिक methods को बनाया जा सकता है, लेकिन इनके parameters या type में अंतर होना चाहिए | compiler methods को आसानी से पहचान सके इसके लिए जरुरी है कि class के सभी methods में कुछ न कुछ अंतर जरुर होना चाहिए | जैसे void area(int radius), void area(int l,int b); यहाँ दोनों methods के name same हैं लेकिन उनके parameters में अंतर है |

Flow of Java Programming


Q. What is Object Oriented Programming ?
Ans.: Object Oriented Programming एक programming technique है | इस programming technique के अनुसार program को objects के एक समूह के रूप में व्यवस्थित किया जाता है | इन objects में उनका data और behaviour दोनों परिभाषित होते हैं | इस concept को 1980 में introduce किया गया था | उसके बाद जीतनी भी नई languages का विकास हुआ उन सभी भाषाओँ में object oriented programming के concept को जोड़ दिया गया | और यह भी माना जाता है कि object oriented programming किसी दूसरी programming technique से अत्यधिक महत्वपूर्ण और शक्तिशाली है |
        यह programming technique निम्नलिखित concepts को बढ़ावा देती हैं –
Modularisation : इसके अनुसार किसी बड़े program या application को बनाने के लिए इसे विभिन्न छोटे-छोटे sub-programs (Modules) में अलग-अलग programming करके फिर एक साथ combine किया जा सकता है |

Software Re-use : इसके अनुसार किसी भी नए program या application को बनाने के लिए हम पहले से बने हुए modules का प्रयोग आसानी से कर सकते हैं |

Q. Flow of java programming .
Ans. : जावा का program सबसे पहले compile किया जाता है, उसके बाद interpret किया जाता है | जावा programming के flow को नीचे चित्र के द्वारा दर्शाया जा रहा है –



Java Source Code : यह computer के instructions का एक समूह है जिसे programmer के द्वारा जावा language की help से notepad पर लिखा जाता है | इस file का extension name (.java) होता है |

Java Compiler : जावा compiler programs का एक समूह होता है, जो source code को bytecode में बदलने का कार्य करता है |

Bytecode : जावा source code compile होने के बाद एक class file generate करता है जिसे bytecode कहते है | यह bytecode machine-independent होता है, जो किसी भी operating system पर आसानी से run हो सकता है | यह bytecode code JVM (Java Virtual Machine) के द्वारा interpret किया जाता है| इसी bytecode के कारण ही जावा अत्यधिक portable बन जाता है |

Java Interpreter : Java interpreter JVM का ही एक भाग होता है | जावा interpreter bytecode code को jvm के लिए decode और execute करता है | JVM एक platform-dependent execution environment है जो जावा bytecode को machine-code में  बदलने का कार्य करता है |

Machine Code : JVM bytecode code को जिस machine पर run करता है, उस machine के microprocessor architecture या operating system के अनुसार machine code में convert कर देता है|


Features of Java


Q. जावा के विभिन्न features की व्याख्या कीजिये |
Ans. : जावा के विभिन्न features निम्नलिखित हैं –


Simple : जावा एक बहुत ही साधारण (Simple) programming language है क्योंकि इसके कुछ concept पुरानी language C और C++ से लिए गए जो इसकी programming को आसान बनाते हैं |

Object Oriented : जावा एक object oriented programming language है, किसी भी program या software के implementation में इस language का पूरा ध्यान objects पर ही होता है |

Distributed : जावा के programs remote locations (इन्टरनेट के जरिये कही से भी)से भी access किये जा सकते हैं |

Multithreaded : जावा के programs एक ही समय पर एक से अधिक task को perform कर सकते हैं | जैसे यदि हम किसी player पर कोई song सुन रहे हैं, उसी समय हम दूसरे song को search भी कर सकते हैं|

Compiled & interpreted : जावा के programs compile और interpret दोनों होते हैं | जावा compiler के द्वारा source code को compile किया जाता है, उसके बाद generated byte code को JVM(Java Virtual Machine) के द्वारा interpret किया जाता है |

Machine-Independent/Portable : जावा के program machine-independent (platform independent) होते हैं, अर्थात जावा के program किसी भी operating system (जैसे – Mac-OS, Linux, Windows etc.) पर run कर सकते हैं |

Garbage Collected : जावा programs में object creation के समय जो memory occupy होती है वह memory program के execution के बाद automatically release कर दी जाती है |

Exception Handling : जावा के programs में कुछ exceptions को handle करने के लिए exception handling जैसे features भी मौजूद हैं |

Secure : जावा के programs user के computer की memory को बिना user के permission के access नहीं कर सकता है |

जावा क्या है ?


Q. जावा क्या है ?
Ans. : जावा एक simple, object oriented, portable, machine-independent, multithraded, compiled and interpreted, garbage collected, high level programming language है | यह language C और C++ के बाद develope की गई | इसमें बहुत से concept जैसे : loop, statements, oop आदि C और C++ से ही लिए गए हैं | यह language James Gosling, Patrick Naughton, Chris Worth, Ed Frank और Mike Sheridan के द्वारा Sun Microsystems में develope किया गया | इसके development की शुरूआत 1991 में की गयी जो की लगभग 1995 तक कार्य करने योग्य बन गई | शुरूआत में जावा नाम OAK रखा गया लेकिन 1996 में इसे बदलकर जावा कर दिया गया | यह इस समय Oracle Corporation का एक भाग है |


Concept of OOPs

Concept of Multithreading

·      Java Threads : thread जावा language की एक ऐसी facility है जो किसी single process में एक से अधिक activities को perform करन...