Java Packages & API

Organizing code and using built-in Java libraries

📦 What are Packages?

Packages organize related classes and interfaces into folders. They prevent naming conflicts, control access, and make code easier to find and maintain in large applications.


// Creating a package
package com.mycompany.utils;

// Importing from other packages
import java.util.ArrayList;
import java.util.Scanner;

public class MyClass {
    // Class content here
}
                                    

Output:

Classes organized in structured folders

Key Package Concepts

📁

Package Declaration

Define which package a class belongs to

package com.example.models;
📥

Import Statement

Use classes from other packages

import java.util.List;
🌟

Wildcard Import

Import all classes from a package

import java.util.*;
🏗️

Built-in Packages

Java's pre-built functionality

java.lang.String
java.util.ArrayList

🔹 Creating and Using Packages

Here's how to create and use your own packages:

// File: com/mycompany/models/Student.java
package com.mycompany.models;

public class Student {
    private String name;
    private int id;
    
    public Student(String name, int id) {
        this.name = name;
        this.id = id;
    }
    
    public String getName() { return name; }
    public int getId() { return id; }
}

// File: com/mycompany/main/Main.java
package com.mycompany.main;

import com.mycompany.models.Student;

public class Main {
    public static void main(String[] args) {
        Student student = new Student("Alice", 123);
        System.out.println("Student: " + student.getName());
    }
}

Output:

Student: Alice

🔹 Common Java API Packages

Java provides many built-in packages with useful classes:

🔸 java.lang (Automatically imported)

// No import needed for java.lang
String text = "Hello World";
System.out.println(text.length());
Math.max(10, 20);
Integer.parseInt("123");

🔸 java.util (Collections and utilities)

import java.util.ArrayList;
import java.util.Scanner;

ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");

Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();

🔸 java.io (Input/Output operations)

import java.io.File;
import java.io.FileWriter;

File file = new File("data.txt");
FileWriter writer = new FileWriter(file);
writer.write("Hello File!");
writer.close();

🔹 Package Access Modifiers

  • public: Accessible from anywhere
  • protected: Accessible within package and subclasses
  • default (no modifier): Accessible within same package only
  • private: Accessible within same class only
package com.example;

public class AccessExample {
    public String publicField = "Everyone can see";
    protected String protectedField = "Package + subclasses";
    String defaultField = "Same package only";
    private String privateField = "This class only";
    
    public void demonstrateAccess() {
        // All fields accessible within same class
        System.out.println(publicField);
        System.out.println(protectedField);
        System.out.println(defaultField);
        System.out.println(privateField);
    }
}

🧠 Test Your Knowledge

Which package is automatically imported in every Java program?