# Java package

Package is a mechanism for organizing a group of related files in the same directory. In a computer system, we organize files into different directories according to their functionality, usability and category.

# Java package

Introduction to Java Package

Package is a mechanism for organizing a group of related files in the same directory. In a computer system, we organize files into
different directories according to their functionality, usability and category.
An example of package is the JDK package of SUN Java as shown below:

In Java, a package is a group of related types classes and interfaces which provides access protection and name space management to use those classes and interfaces. Apart from these, Java also supports special kinds of classes and interfaces known as Enumerations and  Annotation, respectively.

Packaging is used to organize classes that belong to the same files or providing similar functionality. Apart from this, it also helps the programmer to avoid class name collision when we use the same class name as available in the another packages. For example, the Date class of java.util  package is used to access the methods of the Date class. But, if we have a class name "Date" (user defined) in our program, its name would crash with the Date class of java.util package. To avoid this problem, we can use Package through which the "Date" class can be put up into another package like india.mycompany.Date without collision with anyone.

Generally, classes in one package (or directory) have different functionality from the another package. For example, classes in java.io package manage the Input/Output streams to read and write data from and to files, while classes in java.net package give us the way to deal with the network operations.

Features of a Java package

• The protected members of the classes can be accessed by each other in the same package.
• It resolves the naming collision for the types it contains.
• A package may have the following types.
• Interfaces
• Classes
• Enumerated types
• Annotations

Naming convention (Rules) for using  the packages

• Package names are written in all lowercase to avoid conflict with the names of classes or interfaces.

• The directory name must be same as the name of package that is created using "package" keyword in the source file.

• Before running a program, the class path must be picked up till the main directory (or package) that is used in the program.

• If we are not including any package in our java source file then the source file automatically goes to the default package.

• In general, we start a package name begins with the order from top to bottom level.

• In case of the internet domain, the name of the domain is treated in reverse (prefix) order.

Java Package Names and Directory Structure

Java Packages are usually defined using a hierarchical naming pattern in which the Package name consists of words separated by periods. The first part of the Package name represents the main directory in which other subpackages or classes are put up. The remaining part of the Package name reflect the sub contents of the package. Just see the example of packages names:
 Internet Domain Package name Subdirectory path java.sun.com com.sun.java.text \com\sun\java\text murach.com com.murach.orders \com\murach\orders

Lets see a general example to understand the directory structure of the package importing the javax.swing package.

  import javax.swing.*; public class PackageDemo {   public PackageDemo(){   JOptionPane.showMessageDialog(new JFrame(),  " This is a Dialog Box component of swing ","My Message", JOptionPane.INFORMATION_MESSAGE);      }   public static void main(String[] args){   PackageDemo obj=new PackageDemo();   } }

Output of the program:

In the above example,  a Java Package "javax.swing" is a buid-in package imported from the JFC (Java Foundation Classes). The first name of that package "javax" represents the main package. The second part of the package name "swing" stands for the contents of the package. All classes and interfaces reside in the swing package can be accessed according to their functionality.

How to Set the Class Path:

The classpath is a user defined environment variable that is used by Java to determine where predefined classes are located. It tells the java tools and applications where to find user-defined classes. The syntax to set the classpath is shown as:

 C:> set CLASSPATH=%classpath%;classpath1;classpath2.....

You can set multiple path entries that are separated by semi-colons.

To make this thing more understandable, let's put the "HelloWorld" class along with its package "mypackage" under the "C:\mainpackage" directory. Thus the directory structure for this package is shown as:

Now we have changed the location of the package from C:\mypackage\HelloWorld.java to C:\mainpackage\mypackage\HelloWorld.java. Then the CLASSPATH  needs to be changed to point the new location of the package mypackage accordingly shown as:

set CLASSPATH = .;C:\mainpackage;

Although in such condition, Java will look for java classes from the current directory instead of the "C:\mainpackage" directory.

Access protection in packages:

 Access protection Discription No modifier (default) The classes and members specified in the same package are accessible to  all the classes inside the same package. public The classes, methods and member variables under this specifier can be accessed from anywhere. protected The classes, methods and member variables under this modifier are accessible by all subclasses,  and accessible by code in same package. private The methods and member variables are accessible only inside the class.

Access to fields in Java at a Glance:

 Access By public protected default private The class itself Yes Yes Yes Yes A subclass in same package Yes Yes Yes No Non sub-class in the same package Yes Yes Yes No A subclass in other package Yes Yes No No Non subclass in other package Yes No No No

Posted on: February 26, 2008 If you enjoyed this post then why not add us on Google+? Add us to your Circles

Share this Tutorial Follow us on Twitter, or add us on Facebook or Google Plus to keep you updated with the recent trends of Java and other open source platforms.

Related Tutorials

Discuss: Java package   View All Comments

Your Name (*) :
Subject (*):

sujay
May 31, 2011
packages

how can we set the path in the environmental variables?
mitali dash
October 13, 2011
colorpicker

sir,plz give me the code& solution coding of color picker and step by step procedure to use it in java
raj
November 3, 2011
From

import java.util.Scanner; public class NewClass { // main method begins execution of Java application public static void main( String args[] ) { // create Scanner to obtain input from command window Scanner input = new Scanner( System.in ); 4 int number1; // first number to add int number2; // second number to add int sum; // sum of number1 and number2 System.out.print( "Enter first integer: " ); // prompt number1 = input.nextInt(); // read first number from user System.out.print( "Enter second integer: " ); // prompt number2 = input.nextInt(); // read second number from user sum = number1 + number2; // add numbers System.out.printf( "Sum is %d\n", sum ); // display sum } // end method main } // end class Addition
Raj Travels KUTTICHIRA..
March 20, 2013
packages

it is really nice....
nikhil.s
February 11, 2012
java packages

i want know more adout the above topic.
nancy
August 14, 2014
books

i love books
noopur
August 14, 2014
books

i hate books