Programming and Java Fundamentals
Introduction to Java
আপনি একটি free preview lesson দেখছেন।
Lesson Overview
Java হলো একটি জনপ্রিয়, general-purpose এবং object-oriented programming language।
এটি ছোট console application থেকে শুরু করে বড় enterprise system, banking platform, e-commerce application, backend API এবং distributed system তৈরিতে ব্যবহৃত হয়।
এই lesson-এ আমরা জানব:
- Java কী
- Java কীভাবে তৈরি হয়েছিল
- Java-এর গুরুত্বপূর্ণ বৈশিষ্ট্য
- Java কোথায় ব্যবহার করা হয়
- Backend development-এ Java কেন জনপ্রিয়
- Java শেখার সুবিধা ও সীমাবদ্ধতা
- এই course-এ Java ব্যবহার করে আমরা কীভাবে এগোব
Learning Objectives
এই lesson শেষ করার পর আপনি পারবেন:
- Java programming language কী, তা ব্যাখ্যা করতে
- Java-এর সংক্ষিপ্ত ইতিহাস বলতে
- Java-এর গুরুত্বপূর্ণ বৈশিষ্ট্য শনাক্ত করতে
- Java কোথায় ব্যবহৃত হয়, তা বুঝতে
- Backend development-এ Java-এর গুরুত্ব ব্যাখ্যা করতে
- Java, JVM এবং Java platform-এর সম্পর্ক বুঝতে
- Java শেখার সুবিধা ও challenge সম্পর্কে ধারণা দিতে
Java কী?
Java হলো একটি:
- High-level programming language
- General-purpose programming language
- Statically typed language
- Class-based language
- Object-oriented language
- Platform-independent language
Java ব্যবহার করে বিভিন্ন ধরনের software তৈরি করা যায়।
যেমন:
- Console application
- Desktop application
- Web application
- Backend service
- REST API
- Banking system
- E-commerce platform
- Payment system
- Android application
- Data processing application
- Distributed system
একটি simple Java program:
public class Main {
public static void main(String[] args) {
System.out.println("Hello Java");
}
}
Output:
Hello Java
এই code-এর প্রতিটি অংশ আমরা পরবর্তী lessonগুলোতে বিস্তারিতভাবে শিখব।
General-Purpose Language বলতে কী বোঝায়?
General-purpose programming language এমন language, যা শুধু একটি নির্দিষ্ট ধরনের কাজের জন্য তৈরি নয়।
Java ব্যবহার করে অনেক ধরনের problem solve করা যায়।
উদাহরণ:
- Student grade calculate করা
- Inventory manage করা
- Payment process করা
- User account manage করা
- Web request handle করা
- File process করা
- Notification পাঠানো
- Database-এর সঙ্গে কাজ করা
- একাধিক service-এর মধ্যে communication তৈরি করা
Java শুধু website বা শুধু mobile application তৈরির language নয়।
এটি বিভিন্ন domain-এ ব্যবহার করা যায়।
High-Level Language হিসেবে Java
Java একটি high-level programming language।
এর অর্থ, Java developer-কে সাধারণত সরাসরি নিচের বিষয়গুলো manage করতে হয় না:
- CPU instruction
- Raw memory address
- Machine code
- Hardware register
- Manual memory allocation
- Operating system-specific instruction
উদাহরণ:
int total = 10 + 20;
Developer একটি readable expression লেখেন।
Java compiler এবং JVM নিচের low-level কাজগুলো handle করে:
- Value memory-তে রাখা
- CPU instruction তৈরি করা
- Addition execute করা
- Result store করা
এই abstraction developer-কে business problem-এর ওপর focus করতে সাহায্য করে।
Statically Typed Language কী?
Java একটি statically typed language।
এর অর্থ হলো, variable-এর type compile time-এ জানা থাকে।
উদাহরণ:
int age = 25;
এখানে age variable শুধু integer value রাখবে।
নিচের code valid নয়:
int age = "twenty-five";
কারণ "twenty-five" একটি text value, কিন্তু age হলো int type।
Compiler এই problem detect করবে।
আরেকটি example:
String name = "Sakib";
এখানে name একটি String type variable।
নিচের assignment valid নয়:
String name = 100;
Static typing-এর সুবিধা হলো অনেক error program run হওয়ার আগেই detect করা যায়।
Class-Based Language কী?
Java একটি class-based programming language।
Java application-এর code সাধারণত class-এর মধ্যে লেখা হয়।
উদাহরণ:
public class Student {
String name;
int age;
}
এখানে Student একটি class।
Class ব্যবহার করে আমরা কোনো entity বা concept-এর structure define করতে পারি।
যেমন:
- Student
- Course
- Product
- Order
- BankAccount
- Employee
- Payment
Class এবং object Java-এর অত্যন্ত গুরুত্বপূর্ণ concept।
এই course-এর পরবর্তী moduleগুলোতে আমরা এগুলো গভীরভাবে শিখব।
Object-Oriented Language কী?
Java object-oriented programming support করে।
Object-oriented programming বা OOP-এ software-কে object এবং তাদের responsibility-এর মাধ্যমে model করা হয়।
ধরা যাক, একটি banking system-এ BankAccount object থাকতে পারে।
public class BankAccount {
String accountNumber;
double balance;
}
একটি BankAccount object-এর থাকতে পারে:
- Account number
- Balance
- Account holder
- Deposit behaviour
- Withdraw behaviour
OOP-এর গুরুত্বপূর্ণ concept:
- Class
- Object
- Encapsulation
- Inheritance
- Polymorphism
- Abstraction
- Composition
এই course-এর মূল উদ্দেশ্য শুধু Java syntax শেখানো নয়।
আমরা Java ব্যবহার করে object-oriented problem solving এবং software design শিখব।
Java-এর সংক্ষিপ্ত ইতিহাস
Java development শুরু হয় 1990-এর দশকের শুরুতে।
James Gosling এবং Sun Microsystems-এর একটি engineering team languageটি তৈরি করে।
Java-এর শুরুতে নাম ছিল:
Oak
পরে languageটির নাম পরিবর্তন করে Java রাখা হয়।
Java প্রথম publicভাবে প্রকাশিত হয় 1995 সালে।
Java তৈরির মূল লক্ষ্যগুলোর মধ্যে ছিল:
- Portable software তৈরি করা
- Different device-এ code চালানো
- Secure execution environment তৈরি করা
- C এবং C++-এর কিছু complexity কমানো
পরবর্তী সময়ে Java web, enterprise এবং backend development-এ অত্যন্ত জনপ্রিয় হয়ে ওঠে।
Sun Microsystems এবং Oracle
Java প্রথমে Sun Microsystems develop করেছিল।
পরে Oracle, Sun Microsystems acquire করে।
বর্তমানে Java ecosystem-এর গুরুত্বপূর্ণ implementation এবং release Oracle ও wider OpenJDK community-এর মাধ্যমে develop হয়।
Java শুধু একটি company-এর technology নয়।
এটির একটি বড় global ecosystem রয়েছে।
এই ecosystem-এর মধ্যে আছে:
- OpenJDK
- Java compiler
- JVM implementation
- Library
- Framework
- Build tool
- Testing tool
- Developer community
OpenJDK কী?
OpenJDK হলো Java platform-এর open-source implementation।
এতে Java development-এর গুরুত্বপূর্ণ component থাকে।
যেমন:
- Java compiler
- Java runtime
- Standard library
- JVM-related implementation
Different vendor OpenJDK-এর ওপর ভিত্তি করে JDK distribution তৈরি করতে পারে।
উদাহরণ:
- Oracle JDK
- Eclipse Temurin
- Amazon Corretto
- Azul Zulu
- Microsoft Build of OpenJDK
Beginner হিসেবে vendor difference এখনই গভীরভাবে জানা প্রয়োজন নেই।
মূল বিষয় হলো:
Java code লেখার এবং run করার জন্য একটি compatible JDK প্রয়োজন।
Java Platform বলতে কী বোঝায়?
Java শুধু একটি programming language নয়।
Java একটি wider platform-এর অংশ।
Java platform-এর মধ্যে সাধারণত থাকে:
- Java programming language
- Java compiler
- JVM
- Standard library
- Development tools
- Runtime environment
Developer Java source code লেখেন।
Compiler source code-কে bytecode-এ convert করে।
JVM bytecode execute করে।
Standard library common functionality দেয়।
Conceptual flow:
Java Language
↓
Java Compiler
↓
Bytecode
↓
JVM
↓
Operating System and Hardware
Java-এর গুরুত্বপূর্ণ বৈশিষ্ট্য
Java-এর কয়েকটি গুরুত্বপূর্ণ বৈশিষ্ট্য আছে।
এগুলো Java-কে large application development-এর জন্য উপযোগী করে।
Simple and Readable
Java syntax C এবং C++ থেকে প্রভাবিত হলেও Java কিছু low-level complexity কমিয়েছে।
উদাহরণ:
int firstNumber = 10;
int secondNumber = 20;
int total = firstNumber + secondNumber;
Codeটি তুলনামূলকভাবে readable।
Java code সাধারণত explicit হয়।
এর ফলে:
- Code review সহজ হয়
- Team collaboration সহজ হয়
- Large codebase maintain করা সহজ হয়
- Beginner error detect করা সহজ হয়
তবে Java-এর syntax কিছু language-এর তুলনায় verbose হতে পারে।
Platform Independent
Java source code compile হওয়ার পর bytecode তৈরি হয়।
Compatible JVM থাকলে একই bytecode বিভিন্ন operating system-এ চলতে পারে।
Java Source Code
↓
Bytecode
↓
Windows JVM
Linux JVM
macOS JVM
এই model Java application-কে portable করে।
এই ধারণা প্রকাশ করতে প্রায়ই বলা হয়:
Write once, run anywhere.
Object-Oriented
Java class এবং object-এর মাধ্যমে problem model করতে সাহায্য করে।
উদাহরণ:
public class Product {
String name;
int price;
}
এখানে একটি product-এর data একটি class-এর মধ্যে group করা হয়েছে।
পরে behaviour যোগ করা যেতে পারে:
public class Product {
String name;
int price;
void displayDetails() {
System.out.println(name);
System.out.println(price);
}
}
Object-oriented design বড় system organise করতে সাহায্য করে।
Strongly Typed
Java type rule কঠোরভাবে follow করে।
উদাহরণ:
int quantity = 10;
double price = 99.50;
String productName = "Keyboard";
boolean available = true;
প্রতিটি value-এর একটি নির্দিষ্ট type আছে।
Strong typing:
- Invalid assignment prevent করতে সাহায্য করে
- Method usage clear করে
- Refactoring safer করে
- IDE support improve করে
- Large codebase maintain করতে সাহায্য করে
Automatic Memory Management
Java developer সাধারণত manually memory free করেন না।
JVM-এর Garbage Collector unused object-এর memory reclaim করতে পারে।
উদাহরণ:
Student student = new Student();
Objectটি memory-তে তৈরি হবে।
যখন objectটির আর কোনো reachable reference থাকবে না, তখন Garbage Collector ভবিষ্যতে memory reclaim করতে পারে।
এর ফলে developer-কে raw memory allocation এবং deallocation manually manage করতে হয় না।
তবে এর অর্থ এই নয় যে memory নিয়ে কখনো ভাবতে হবে না।
Poorly designed Java application-এ হতে পারে:
- Excessive memory usage
- Unnecessary object creation
- Memory leak-like behaviour
- Long garbage collection pause
Advanced topic হিসেবে আমরা পরে এগুলো সম্পর্কে জানব।
Robust
Java-কে robust language বলা হয় কারণ এটি error কমাতে এবং predictable execution দিতে বিভিন্ন mechanism ব্যবহার করে।
যেমন:
- Static type checking
- Exception handling
- Automatic memory management
- Bytecode verification
- Array bounds checking
- Structured class system
উদাহরণ:
int[] numbers = {10, 20, 30};
System.out.println(numbers[5]);
Array-এর index 5 নেই।
Program runtime-এ error দেবে।
Java silentভাবে invalid memory location access করতে দেবে না।
Secure
Java security-এর জন্য বিভিন্ন layer ব্যবহার করে।
যেমন:
- Bytecode verification
- Type safety
- Managed memory
- Class loading rules
- Access control
- Security library
Java language alone application secure করে না।
Developer-কে আরও handle করতে হয়:
- Authentication
- Authorization
- Input validation
- Secure password storage
- SQL injection prevention
- Network security
- Dependency security
- Access control
তবে Java platform secure application তৈরির জন্য শক্তিশালী tool এবং mechanism দেয়।
Multithreading Support
Java একাধিক task concurrentভাবে execute করার জন্য thread support করে।
উদাহরণ:
একটি backend application একই সময়ে:
- User request handle করতে পারে
- Database query করতে পারে
- Notification পাঠাতে পারে
- Background job process করতে পারে
Java-তে thread এবং concurrency support language ও standard library-এর গুরুত্বপূর্ণ অংশ।
Concurrency advanced topic।
Strong Java developer হওয়ার জন্য ভবিষ্যতে এটি শেখা গুরুত্বপূর্ণ।
Rich Standard Library
Java standard library অনেক common functionality দেয়।
যেমন:
- String processing
- Collection
- File handling
- Date and time
- Networking
- Concurrency
- Database connectivity
- Input and output
- Mathematics
- Security
উদাহরণ:
String name = "Java";
System.out.println(name.length());
Output:
4
String class text-related অনেক useful method দেয়।
Large Ecosystem
Java-এর ecosystem অত্যন্ত বড়।
Java development-এর জন্য অনেক জনপ্রিয় tool এবং framework আছে।
যেমন:
- Spring Boot
- Hibernate
- Jakarta Persistence
- Maven
- Gradle
- JUnit
- Mockito
- Apache Kafka client
- Jackson
- Netty
এগুলো ব্যবহার করে developer দ্রুত production application তৈরি করতে পারেন।
তবে framework শেখার আগে Java foundation strong হওয়া প্রয়োজন।
Backward Compatibility
Java ecosystem backward compatibility-কে গুরুত্ব দেয়।
অনেক পুরোনো Java application নতুন Java runtime-এও কাজ করতে পারে।
Large enterprise system-এর ক্ষেত্রে এটি গুরুত্বপূর্ণ।
কারণ company-এর application বহু বছর ব্যবহার হতে পারে।
Backward compatibility:
- Upgrade সহজ করে
- Existing investment রক্ষা করে
- Long-lived software maintain করতে সাহায্য করে
তবে সব library বা framework automatically compatible থাকবে—এমন নয়।
Upgrade-এর সময় testing প্রয়োজন।
Java কোথায় ব্যবহার করা হয়?
Java বিভিন্ন industry এবং application type-এ ব্যবহৃত হয়।
Backend Development
Java backend application তৈরিতে ব্যাপকভাবে ব্যবহৃত হয়।
Backend application-এর কাজ হতে পারে:
- HTTP request গ্রহণ করা
- Business rule execute করা
- Database-এর সঙ্গে কাজ করা
- Authentication handle করা
- Payment process করা
- Email বা notification পাঠানো
- অন্য service-এর সঙ্গে যোগাযোগ করা
- API response তৈরি করা
Spring Boot Java backend development-এর একটি জনপ্রিয় framework।
Example backend flow:
Client Request
↓
Java Backend
↓
Business Logic
↓
Database
↓
API Response
Enterprise Application
Enterprise application বড় organization-এর complex operation manage করে।
যেমন:
- Banking system
- Insurance system
- Airline reservation
- Telecom platform
- Government system
- Healthcare platform
- Large e-commerce system
এই systemগুলোতে প্রয়োজন হতে পারে:
- Reliability
- Security
- Transaction management
- Scalability
- Long-term maintenance
- Strong tooling
Java ecosystem এই requirementগুলোর জন্য জনপ্রিয়।
Financial System
Bank, payment processor এবং financial organization Java ব্যবহার করে।
কারণ Java support করে:
- Strong type system
- Mature library
- Concurrency
- Transaction processing
- Long-running application
- Monitoring ecosystem
- Enterprise integration
Financial software-এ correctness এবং reliability অত্যন্ত গুরুত্বপূর্ণ।
E-Commerce Application
Java ব্যবহার করে e-commerce platform-এর বিভিন্ন component তৈরি করা যায়।
যেমন:
- Product catalog
- Inventory service
- Shopping cart
- Order service
- Payment service
- Delivery tracking
- Notification service
- Customer account
Object-oriented design ব্যবহার করে এসব domain model করা যায়।
Distributed System
Distributed system-এ একাধিক service network-এর মাধ্যমে একসঙ্গে কাজ করে।
Java ব্যবহার করে তৈরি করা যায়:
- Microservice
- Message consumer
- Event-driven service
- API gateway
- Background worker
- Data processing service
Java ecosystem-এ distributed system-এর জন্য জনপ্রিয় technology আছে।
যেমন:
- Spring Boot
- Kafka
- gRPC
- Netty
- Kubernetes integration
- Observability library
Android Development
দীর্ঘ সময় Android application development-এ Java প্রধান language ছিল।
বর্তমানে Kotlin বেশি জনপ্রিয় হলেও Java এখনও Android ecosystem-এ গুরুত্বপূর্ণ।
অনেক existing Android application এবং library Java-তে লেখা।
Desktop Application
Java ব্যবহার করে desktop application তৈরি করা যায়।
Technology-এর উদাহরণ:
- Swing
- JavaFX
তবে modern Java usage-এর বড় অংশ backend এবং enterprise development-এ দেখা যায়।
Big Data এবং Data Processing
Java ecosystem-এর অনেক data processing system Java বা JVM-based language ব্যবহার করে।
উদাহরণ:
- Hadoop ecosystem
- Apache Kafka
- Elasticsearch-এর কিছু অংশ
- Large-scale stream processing tool
Java-এর performance, portability এবং concurrency support এই ধরনের system-এ useful।
Testing and Automation
Java ব্যবহার করে:
- Unit test
- Integration test
- API test
- Test automation
- Build tool
- Internal developer tool
তৈরি করা যায়।
JUnit Java testing ecosystem-এর অন্যতম জনপ্রিয় framework।
Backend Development-এ Java কেন জনপ্রিয়?
Java backend development-এ জনপ্রিয় হওয়ার কয়েকটি কারণ আছে।
Mature Ecosystem
Java কয়েক দশক ধরে production application-এ ব্যবহৃত হচ্ছে।
এর ফলে developer-রা পায়:
- Mature framework
- Stable library
- Proven architecture
- Large community
- Extensive documentation
- Production experience
Strong Framework Support
Spring Boot ব্যবহার করে Java backend developer দ্রুত তৈরি করতে পারেন:
- REST API
- Authentication system
- Database integration
- Validation
- Configuration
- Background job
- Messaging integration
- Monitoring endpoint
তবে Spring Boot ভালোভাবে বুঝতে Java foundation প্রয়োজন।
Good Performance
Modern JVM runtime profiling এবং JIT compilation ব্যবহার করে ভালো performance দিতে পারে।
Java long-running server application-এর জন্য উপযোগী।
Performance আরও depend করে:
- Algorithm
- Database query
- Network latency
- Object allocation
- Thread usage
- Application architecture
- JVM configuration
Scalability
Java ব্যবহার করে এমন backend application তৈরি করা যায়, যা:
- অনেক user request handle করে
- Multiple server-এ run করে
- Database-এর সঙ্গে কাজ করে
- Queue বা message broker ব্যবহার করে
- Horizontal scaling support করে
Language একা scalability দেয় না।
তবে Java ecosystem scalable architecture তৈরি করতে শক্তিশালী support দেয়।
Maintainability
Java-এর explicit syntax এবং type system বড় codebase maintain করতে সাহায্য করে।
উদাহরণ:
public int calculateTotal(int price, int quantity) {
return price * quantity;
}
Method signature দেখে বোঝা যায়:
- Method দুটি
intinput গ্রহণ করে - Method একটি
intresult return করে
Large team-এ এই clarity গুরুত্বপূর্ণ।
Tooling
Java-এর IDE support অত্যন্ত শক্তিশালী।
জনপ্রিয় IDE:
- IntelliJ IDEA
- Eclipse
- Visual Studio Code
IDE সাহায্য করে:
- Code completion
- Error detection
- Refactoring
- Debugging
- Test running
- Dependency navigation
- Code formatting
Strong tooling developer productivity বাড়ায়।
Large Developer Community
Java-এর global developer community বড়।
এর সুবিধা:
- Learning resource পাওয়া যায়
- Library পাওয়া যায়
- Problem-এর solution পাওয়া যায়
- Open-source project পাওয়া যায়
- Job opportunity পাওয়া যায়
- Experienced engineer পাওয়া যায়
তবে online solution blindly copy করা উচিত নয়।
Solution-এর কারণ এবং trade-off বুঝতে হবে।
Java শেখার সুবিধা
Java শেখার কিছু গুরুত্বপূর্ণ সুবিধা আছে।
Strong Programming Foundation
Java শেখার সময় আপনি শিখবেন:
- Type
- Variable
- Condition
- Loop
- Method
- Class
- Object
- Error handling
- Collection
- Generics
এসব concept অন্য language শেখার ক্ষেত্রেও কাজে লাগে।
Object-Oriented Thinking
Java OOP শেখার জন্য structured environment দেয়।
Backend Career Path
Java backend engineering-এর জন্য শক্তিশালী career option।
Production-Relevant Ecosystem
Java শুধু educational language নয়।
এটি real production system-এ ব্যাপকভাবে ব্যবহৃত হয়।
Transferable Knowledge
Java থেকে শেখা অনেক concept অন্য language-এও প্রযোজ্য।
যেমন:
- Kotlin
- C#
- Go
- Python
- TypeScript
Java শেখার Challenge
Java powerful হলেও beginner-এর জন্য কিছু challenge থাকতে পারে।
Verbose Syntax
কিছু simple কাজের জন্য Java-তে বেশি code লিখতে হয়।
Java:
System.out.println("Hello");
Python:
print("Hello")
তবে Java-এর explicit structure বড় codebase-এ clarity দিতে পারে।
অনেক Concept একসঙ্গে দেখা যায়
প্রথম Java program-এ beginner অনেক unfamiliar term দেখেন:
public class Main {
public static void main(String[] args) {
System.out.println("Hello");
}
}
এখানে আছে:
publicclassstaticvoidmainString- Array syntax
- Method call
সব concept একসঙ্গে বুঝতে হবে না।
আমরা course-এ ধাপে ধাপে প্রতিটি অংশ শিখব।
Framework-এর Complexity
অনেকে Java syntax না শিখেই Spring Boot শুরু করেন।
এর ফলে তারা code run করতে পারলেও বুঝতে পারেন না:
- Object কীভাবে তৈরি হচ্ছে
- Dependency injection কী
- Interface কেন ব্যবহার হচ্ছে
- Annotation কী করছে
- Exception flow কীভাবে কাজ করছে
- Collection বা generic কেন প্রয়োজন
এই course foundation আগে তৈরি করবে।
JVM এবং Memory Concept
Advanced Java development-এর জন্য বুঝতে হয়:
- Heap
- Stack
- Garbage collection
- Thread
- Class loading
- JVM tuning
Beginner হিসেবে এখনই সব detail প্রয়োজন নেই।
তবে ধাপে ধাপে এগুলো শেখা হবে।
Java কি Beginner-Friendly?
Java beginner-friendly হতে পারে, যদি সঠিক sequence-এ শেখানো হয়।
ভালো learning sequence:
- Program কী
- Java কীভাবে run করে
- Basic syntax
- Variable এবং data type
- Operator
- Condition
- Loop
- Method
- Class এবং object
- OOP principle
খারাপ learning approach হলো:
- Code copy করা
- Output দেখে মুখস্থ করা
- Framework দিয়ে শুরু করা
- Error message ignore করা
- Practice না করা
Java শেখার জন্য নিয়মিত code লেখা জরুরি।
Java এবং JavaScript কি একই?
না।
Java এবং JavaScript দুটি আলাদা programming language।
তাদের:
- Syntax
- Type system
- Runtime
- Use case
- Ecosystem
- Execution model
আলাদা।
Java
Java সাধারণত ব্যবহার করা হয়:
- Backend application
- Enterprise software
- Android application
- Distributed system
JavaScript
JavaScript সাধারণত ব্যবহার করা হয়:
- Browser application
- Frontend development
- Node.js backend
- Interactive web page
শুধু নামের মধ্যে মিল থাকলেও language দুটি একই নয়।
Java এবং JVM Language
Java bytecode শুধু Java language থেকে তৈরি হতে হবে—এমন নয়।
অন্য language-ও JVM-এর জন্য bytecode তৈরি করতে পারে।
উদাহরণ:
- Kotlin
- Scala
- Groovy
- Clojure
এগুলোকে JVM language বলা হয়।
Conceptual flow:
Java
Kotlin
Scala
Groovy
↓
Bytecode
↓
JVM
Java শেখার মাধ্যমে JVM ecosystem-এর foundation তৈরি হয়।
Java Version কী?
Java সময়ের সঙ্গে evolve করে।
নতুন version-এ যোগ হতে পারে:
- নতুন language feature
- Performance improvement
- Security fix
- Library improvement
- JVM enhancement
Java version example:
Java 8
Java 11
Java 17
Java 21
Java 25
সব project একই version ব্যবহার করে না।
কিছু organization stability-এর জন্য Long-Term Support বা LTS version ব্যবহার করে।
Course-এ আমরা modern Java syntax এবং widely supported concept ব্যবহার করব।
LTS Version কী?
LTS-এর পূর্ণরূপ:
Long-Term Support
LTS version দীর্ঘ সময় security update এবং support পেতে পারে।
Organization production application-এর জন্য প্রায়ই LTS version পছন্দ করে।
এর কারণ:
- Stability
- Longer support period
- Predictable upgrade cycle
- Enterprise tooling compatibility
Beginner হিসেবে মূল concept version-independentভাবে শেখা গুরুত্বপূর্ণ।
Java Standard Library
Java standard library built-in class এবং API দেয়।
উদাহরণ:
String message = "Learning Java";
System.out.println(message.length());
System.out.println(message.toUpperCase());
Output:
13
LEARNING JAVA
এখানে:
Stringlength()toUpperCase()
Java standard library-এর অংশ।
আরেকটি example:
Math.max(10, 20);
এটি বড় value return করে।
int largest = Math.max(10, 20);
System.out.println(largest);
Output:
20
Library এবং Framework-এর পার্থক্য
Library
Library reusable code দেয়, যেটি developer প্রয়োজন অনুযায়ী call করেন।
উদাহরণ:
Math.max(10, 20);
Framework
Framework application-এর structure এবং execution flow-এর বড় অংশ define করে।
Spring Boot একটি framework।
Simplifiedভাবে:
Library-কে আপনার code call করে, আর framework অনেক ক্ষেত্রে আপনার code-কে call করে।
এই difference ভবিষ্যতে আরও পরিষ্কার হবে।
Java Application-এর একটি Simple Example
public class GradeCalculator {
public static void main(String[] args) {
int mathematics = 80;
int english = 75;
int science = 85;
int total = mathematics + english + science;
double average = total / 3.0;
System.out.println("Total: " + total);
System.out.println("Average: " + average);
}
}
Output:
Total: 240
Average: 80.0
এই program-এ ব্যবহার করা হয়েছে:
- Class
mainmethod- Variable
- Data type
- Arithmetic operation
- String
- Output
Module শেষে আপনি এমন program নিজে লিখতে পারবেন।
Java শেখার সঠিক পদ্ধতি
Java শেখার জন্য নিচের অভ্যাসগুলো গুরুত্বপূর্ণ।
Code নিজে লিখুন
শুধু lesson পড়বেন না।
প্রতিটি example নিজে type করুন।
Error করতে ভয় পাবেন না
Error learning process-এর অংশ।
Output অনুমান করুন
Program run করার আগে output কী হবে, তা ভাবুন।
Code পরিবর্তন করুন
Example copy করার পর value এবং logic পরিবর্তন করুন।
ছোট Problem Solve করুন
প্রতিটি concept দিয়ে ছোট exercise করুন।
Concept ব্যাখ্যা করুন
নিজের ভাষায় concept explain করার চেষ্টা করুন।
নিয়মিত Practice করুন
সপ্তাহে একদিন অনেক code লেখার চেয়ে প্রতিদিন অল্প practice বেশি কার্যকর।
এই Course-এ আমরা কী শিখব?
এই course-এ learning path হবে:
Programming Fundamentals
↓
Java Syntax
↓
Variables and Data Types
↓
Operators
↓
Conditions
↓
Loops
↓
Methods
↓
Classes and Objects
↓
Encapsulation
↓
Inheritance and Composition
↓
Abstraction and Interfaces
↓
Polymorphism
↓
Collections and Generics
↓
Complete OOP Application
আমাদের লক্ষ্য শুধু code run করানো নয়।
আমাদের লক্ষ্য:
- Problem বুঝতে শেখা
- Clean code লেখা
- Responsibility identify করা
- Object model তৈরি করা
- Maintainable design তৈরি করা
- Backend development-এর foundation তৈরি করা
গুরুত্বপূর্ণ Terms
Java
একটি high-level, general-purpose, statically typed এবং object-oriented programming language।
General-Purpose Language
বিভিন্ন ধরনের application এবং problem solve করার জন্য ব্যবহারযোগ্য language।
Statically Typed
যে language-এ variable এবং expression-এর type compile time-এ check করা হয়।
Class-Based
যে language-এ program structure class-এর ওপর ভিত্তি করে তৈরি হয়।
Object-Oriented Programming
Object এবং responsibility ব্যবহার করে software model ও design করার পদ্ধতি।
Platform Independent
Compatible runtime থাকলে একই compiled code বিভিন্ন platform-এ চালানোর ক্ষমতা।
OpenJDK
Java platform-এর open-source implementation।
Standard Library
Language-এর সঙ্গে দেওয়া reusable built-in class এবং API।
Ecosystem
Language-এর চারপাশের framework, library, tool এবং community-এর সমষ্টি।
Backend
Application-এর server-side অংশ, যা business logic, database এবং API handle করে।
Enterprise Application
বড় organization-এর complex business operation manage করা software।
LTS
Long-Term Support version, যা দীর্ঘ সময় support পেতে পারে।
JVM Language
যে programming language JVM-compatible bytecode তৈরি করতে পারে।
Practice Exercise 1: Java-এর ব্যবহার
নিচের প্রতিটি system-এ Java কীভাবে ব্যবহার করা যেতে পারে, তা এক বা দুই sentence-এ লিখুন:
- Banking system
- Learning platform
- E-commerce application
- Food delivery application
- Payment service
Practice Exercise 2: Feature শনাক্ত করুন
নিচের description কোন Java feature-এর সঙ্গে সবচেয়ে বেশি সম্পর্কিত, তা লিখুন।
Description 1
একই compiled code different operating system-এ চালানো যায়।
Description 2
Variable-এর type program run হওয়ার আগে check করা হয়।
Description 3
Unused object-এর memory runtime নিজে reclaim করতে পারে।
Description 4
Application class এবং object ব্যবহার করে model করা হয়।
Description 5
Common কাজের জন্য built-in reusable API পাওয়া যায়।
Possible answers:
- Static typing
- Platform independence
- Object-oriented programming
- Automatic memory management
- Standard library
Practice Exercise 3: Java নাকি JavaScript?
প্রতিটি statement Java, JavaScript নাকি উভয়ের জন্য প্রযোজ্য, তা লিখুন।
- Browser frontend development-এ ব্যাপকভাবে ব্যবহৃত হয়
- JVM bytecode-এ compile হয়
- Backend application তৈরিতে ব্যবহার করা যায়
- Class support করে
- নামের মধ্যে
Javaশব্দ আছে - একই programming language
Practice Exercise 4: Code পর্যবেক্ষণ করুন
নিচের code দেখুন:
public class Product {
String name;
int price;
}
উত্তর দিন:
- Class-এর নাম কী?
- Field কয়টি?
- Fieldগুলোর নাম কী?
- কোন field text রাখবে?
- কোন field integer রাখবে?
- এই class কোন real-world concept represent করছে?
Practice Exercise 5: নিজের ভাষায় ব্যাখ্যা করুন
নিচের প্রশ্নগুলোর উত্তর নিজের ভাষায় লিখুন:
- Java-কে general-purpose language বলা হয় কেন?
- Static typing-এর সুবিধা কী?
- Backend development-এ Java জনপ্রিয় কেন?
- Java এবং JavaScript একই language নয় কেন?
- Framework শেখার আগে Java foundation প্রয়োজন কেন?
Practice Exercise 6: Application Idea
Java ব্যবহার করে তৈরি করা যায় এমন একটি application idea নির্বাচন করুন।
উদাহরণ:
- Library management system
- Expense tracker
- Course management system
- Inventory application
- Bank account simulator
লিখুন:
- Application-এর নাম
- Application কোন problem solve করবে
- Possible তিনটি class
- Possible তিনটি feature
- User কী input দেবে
- Application কী output দেবে
Knowledge Check
Question 1
Java কী ধরনের programming language?
Question 2
Java প্রথমে কোন নামে পরিচিত ছিল?
Question 3
Java source code কে bytecode-এ convert করে?
Question 4
Java bytecode কে execute করে?
Question 5
Statically typed language বলতে কী বোঝায়?
Question 6
Java object-oriented হওয়ার অর্থ কী?
Question 7
Java platform-independent কীভাবে হয়?
Question 8
Java backend development-এ জনপ্রিয় কেন?
Question 9
Java standard library কী দেয়?
Question 10
Java এবং JavaScript কি একই language?
Question 11
OpenJDK কী?
Question 12
LTS-এর পূর্ণরূপ কী?
Question 13
Automatic memory management বলতে কী বোঝায়?
Question 14
JVM language-এর দুটি উদাহরণ দিন।
Question 15
Java শেখার সময় framework দিয়ে শুরু করা problem তৈরি করতে পারে কেন?
Knowledge Check Answers
Answer 1
Java একটি high-level, general-purpose, statically typed, class-based এবং object-oriented programming language।
Answer 2
Java প্রথমে Oak নামে পরিচিত ছিল।
Answer 3
Java compiler source code-কে bytecode-এ convert করে।
Answer 4
JVM Java bytecode execute করে।
Answer 5
Statically typed language-এ variable এবং expression-এর type compile time-এ check করা হয়।
Answer 6
Java class এবং object ব্যবহার করে data ও behaviour model করতে সাহায্য করে।
Answer 7
Java compiler platform-neutral bytecode তৈরি করে, যা compatible JVM ব্যবহার করে বিভিন্ন operating system-এ চলতে পারে।
Answer 8
Java-এর mature ecosystem, strong typing, framework support, performance, maintainability এবং enterprise tooling backend development-এর জন্য উপযোগী।
Answer 9
Java standard library common কাজের জন্য built-in class এবং API দেয়।
Answer 10
না। Java এবং JavaScript দুটি আলাদা programming language।
Answer 11
OpenJDK হলো Java platform-এর open-source implementation।
Answer 12
LTS-এর পূর্ণরূপ:
Long-Term Support
Answer 13
Automatic memory management-এর অর্থ JVM unused object-এর memory reclaim করতে পারে।
Answer 14
JVM language-এর উদাহরণ:
- Kotlin
- Scala
Answer 15
Java foundation ছাড়া framework শুরু করলে class, object, interface, dependency, exception এবং runtime behaviour বোঝা কঠিন হতে পারে।
Lesson Summary
এই lesson-এ আমরা শিখেছি:
- Java একটি general-purpose programming language
- Java high-level, statically typed, class-based এবং object-oriented
- Java প্রথমে
Oakনামে develop হয়েছিল - Java শুধু একটি language নয়, একটি wider platform-এর অংশ
- Java compiler source code-কে bytecode-এ convert করে
- JVM bytecode execute করে
- Java platform independence support করে
- Java automatic memory management দেয়
- Java-এর rich standard library এবং large ecosystem রয়েছে
- Java backend, enterprise, financial এবং distributed system-এ ব্যবহৃত হয়
- Java এবং JavaScript দুটি আলাদা language
- Java শেখা backend engineering-এর জন্য শক্তিশালী foundation তৈরি করে
- Framework শেখার আগে core Java এবং OOP বোঝা জরুরি