Comp Sci Java Boot Camp Part 1
Session Overview
Focuses on the science behind Java programming and execution.
Explores project management and testing within the software world.
Importance of effective project management for enterprise-level projects.
Java Fundamentals
Java is influenced by the C programming language, which is low-level yet still considered high-level compared to assembly language.
C allows for low-level hardware manipulation but introduces potential memory management errors.
Developed by Sun Microsystems, Java was designed to eliminate some of the complexities associated with C.
Characteristics of Java
Statically Typed Language:
Variables declared with a specific type cannot be changed to another type after declaration.
Example: an integer variable cannot later be assigned a string value, leading to a compilation error.
Contrasts with Python, where such flexibility exists.
Primitive Types vs. Reference Types:
Primitive Types: Defined by Java itself, including basic data types like int, float, and boolean.
Reference Types: Created by the user, including arrays and objects. These types are stored differently in memory.
Memory Management in Java
Stack and Heap Memory:
Stack is used for static memory allocation, with stack frames created for each method execution.
Follows a Last In, First Out (LIFO) structure, allocating memory for methods as they are called and freeing it as they are completed.
Stack Overflow Error: Occurs when the stack runs out of memory due to too many methods being pushed onto it.
Working with Methods
Example -
addTomethod operates on both primitive data types and reference types:Passing primitives (e.g., individual integers) only modifies local copies, leaving original values unchanged.
Passing arrays (reference types) allows changes to persist since they reference the original memory location.
Execution Process
How Java Executes Code:
Write code in a
.javafile (e.g., HelloWorld).Compile using
javacto produce a.classfile (bytecode).Run using the Java Virtual Machine (JVM), which interprets the bytecode and compiles it to machine code for execution.
Java's execution model mixes both compilation and interpretation, making it versatile across different platforms.
Example Code
Basic structure of a Java program:
Hello, World!Compiled into bytecode and executed via the JVM.
Important distinction: Java manages memory automatically, alleviating manual allocation issues.
Important Concepts
Version Control Systems (e.g., Git):
Centralizes code and manages changes effectively, allowing for collaborative development.
Tracks changes made over time, facilitating easy rollback and team collaboration.
Discussion Points
Question raised regarding how heap and stack interact during method calls:
Changes to reference types are seen in the heap while primitive types remain unchanged when passed to methods.
The importance of clear understanding in programming and implementation practices.