IEEE Chapter
IEEE Chapter
IEEE Chapter
Literature Survey
Chapter 2
LITERATURE SURVEY
We have used java programming language for implementing this project. The description of Java, its features, components and functions are described below.
2007-2008
Literature Survey
Scalable Wireless Ad-hoc Network Simulation In our project we are making use of the JFCs.
Literature Survey
For implementing this project we have mainly used Swing that is nothing but a set of class that provides more powerful and flexible components. The classes of the Swing which we have used for this project are described below. The classes of the Swing which we have used for this project are described below.
JButton:
JButton is a push button used to fire action events when they activated. When we enter the required parameters into the text field of login window and click on login button an event is generated, the actionlistener listens to the event generated and performs the action of logging into the system.
JPanel:
JPanel class is used for creating the panel to login window.
JTextField:
JTextField class is used for entering the input into the username, number of nodes in the network etc., into the textfield.
JPasswordField:
JPasswordField is used for entering the password into the edit field in the login window.
JTextArea:
JTextArea class displays multiple lines of text in a single font and style. In this project this class is used to create the status window which shows the status of the operation being performed in this project.
JLable:
JLable class is used for naming the windows and textboxes that we created in our project.
2007-2008
Literature Survey
JScrollPane:
Here we are using the JScrollPane class to view contents of the tables if it exceeds the default size, the scrollbar shows up so that we can view the contents of the table by scrolling upwards or downwards.
JTabbedPane:
We have used JTabbedPane class for switching from one text field to another or from one button to another very quickly.
JOptionPane:
In this application if the username and password are not entered properly, it is wrong and if the information about the nodes are incorrect then this class creates popup windows as Invalid name and password .This class is mainly used for creating various window.
JScrollPane:
In this application if we want to calculate the ranks for 12 or more than 12 nodes in the network then this class will create an automatic vertical scrollbar in the nodes parameter table for viewing parameters of the nodes together.
JInternalFrame:
In this application this class is used to add the columns named IP
Address,Portnumber,Distance,Energy and Link Quality in the parameter entry table. It also adds the END and Send To all button to the table also. This class is also used to create the icons also in the application. It also resize the tables depending upon the nodes entered by the user.
JTable:
In this application this class is mainly used to create the tables of this application.
2007-2008
Literature Survey
2.2 Need of Our Project:The Scalable Wireless Ad-hoc Network Simulation project is mainly intended to demonstrate the advantages that are obtained by using the XTC Algorithm over the other multicasting algorithms such as expanded ring search algorithm, Core resolution algorithms etc.... So the need of this project arises to make adhoc network more scalable, more convenient to use and for smooth data transfer by reducing the network congestion. Other prominent feature that this project demonstrates are listed below:
No existing infrastructure is required Mobile users can easily communicate High Bandwidth, quality, reliability and variance Energy conservation very less Wonderful Scalability Quality of Service Simplicity and ease of implementation Efficient computing QoS support
modularizing programs by creating partitioned memory area for both data and functions that can be used as templates for creating copies of such modules on demand. Object-oriented programming is at the core of Java. In fact, all Java programs are object-oriented-this isnt an option the way that is in C++. The major objective of object-oriented approach is to eliminate some of the flaws encountered in the procedural approach. OOP treats data as a critical element in the program development and does not allow it to flow freely around the system. It ties data more closely to the functions that operate on it and protects it from unintentional modification
2007-2008
Literature Survey
by other functions. OOP allows us to compose a problem into a number of entities called Objects and then build data and functions around these entities. The combination of data and methods make up an object. According to Grady Booch, a leading exponent of the object-oriented approach, an object has the following characteristics. It has state. It may display a behavior. It has a unique identity.
Encapsulation: The Wrapping up of data and methods into a single unit (called Class) is known as encapsulation.
Inheritance: Inheritance is the process by which objects of one class acquire the properties of objects of another class. Polymorphism: Polymorphism means the ability to take more than one form. For Example, an operation may exhibit different behavior in different instances. ADVANTAGES OF OBJECT- ORIENTATION:
10
2007-2008
Literature Survey
Realistic Modeling: Since we live in a world of objects, it logically follows that the objectoriented approach models the real world more accurately than the conventional, procedural approach.
Reusability: In the object-oriented approach, you build classes, which can then be used by several applications. The benefit of reusability translates to a saving in time and effort, which in turn results in cost benefits. Resilience to change: Through the object-oriented approach, system can be allowed to evolve. When a change is suggested, the old system need not be completely abandoned and rebuilt from scratch. Resilience to change, results in ease of maintenance. For the same reason, even during construction, paths of the system under development can be refined without any major change to other parts. JAVA HISTORY: James Gosling, Patrick Naughton, Chris Warth, Ed Franck, and Mike Sheridan conceived JAVA, at Sun Micro Systems, Inc. in 1991. This language was initially called OAK but was renamed JAVA in 1995. Bill Joy, Arthur Van Hoff, Jonathan Payne, Franck Yellin, and Tim Lindholm were key contributors to the maturing of the original prototype.
Dept of CSE, SJCIT 11 2007-2008
Literature Survey
The original impetus for Java was not the Internet! Instead, the primary motivation was the need for a platform-independent language that could be used to create software to be embedded in various consumer electronic devices, such as microwave ovens and remote controls. As you can probably guess, many different types of CPUs are used as controllers. The trouble with C and C++ is that they are designed to compile for a specific target. Although it is possible to compile a c++ program for just about any type of CPU, to do so requires a full c++ compiler targeted for that CPU. The problem is that compilers are expensive and time consuming to create. An Easier and more costefficient solution were needed. In an attempt to find such a solution, Gosling and others began work on a portable, platform-independent language that could be used to produce code that would run on a variety of CPUs under different environments. This effort ultimately led to the creation of JAVA. JAVA FEATURES: Sun micro systems officially describes Java with the following attributes: Compiled and interpreted. Platform - independent and portable. Object-oriented. Robust and secure. Distributed. Familiar, simple and small. Multithreaded and Interactive. High performance. Dynamic and extensible. Compiled and Interpreted: Java combines both this approaches thus making Java a two-stage system. First, Java compiler translates source code into what is known as byte code Instructions.
12
2007-2008
Literature Survey
In the second stage, Java interpreter generates machine code that can be directly executed by the machine that is running the Java program. Platform-Independent and Portable: The most significant contribution of Java over other languages is its portability. Changes and upgrades in operating systems, processors and system resources will not force any changes in Java programs. Java ensures portability in two ways. First, a Java compiler generates byte code instructions that can be implemented on any machine. Secondly, the sizes of the primitive data types are machine-independent. Object-oriented: Java is a true object-oriented language. Almost everything in Java is an object. All program code data reside within object and classes. Java comes with an extensive set of classes, arranged in packages, that we can use in our programs by inheritance. The object model in Java is simple and easy to extend. Robust and Secure: Java is a robust language. It provides many safeguards to ensure reliable code. It has strict compile time and runtime checking for data types. It is designed as a garbage-collected language relieving the programmers virtually all memory management problems. Java also incorporates the concept of exception handling, which captures series errors and eliminates any risk of crashing the system. Security becomes an important issue for a language that is used for programming on Internet. Threat of viruses and abuse of resources is everywhere. Java systems not only verify all memory access but also ensure that no viruses are communicated with an applet. The absence of pointers in Java ensures that programs cannot gain access to memory locations without proper authorization. Distributed:
13
2007-2008
Literature Survey
Java is designed as a distributed language for creating applications on networks. It has the ability to share both data and programs. Java applications can open and access remote objects on Internet as easily as they can do in a local system. This enables multiple programmers at multiple remote locations to collaborate and work together on a single project. Simple, small and familiar: Java is a small and simple language. Many features of C and C++ that are either redundant or sources of unreliable code are not part of Java. For example, Java does not use pointers, preprocessor header files, go to statement and many others. It also eliminates operator overloading and multiple inheritance. Familiarity is another striking feature of Java. To make the language look familiar to the existing programmers, it was modeled on C and C++ languages. Java uses many constructs of C and C++ and therefore, Java code looks like a C++ code. In fact, Java is simplified version of C++. Multithreaded and interactive: Multithreaded means handling multiple tasks simultaneously. Java supports multithreaded programs. This means that we need not wait for the application to finish one task before beginning another. This feature greatly improves the interactive performance of graphical applications. The Java runtime comes with tools that support multiprocessors synchronization and constructs smoothly running interactive systems. High performance: Java performance is impressive for an interpreted language, mainly due to the use of intermediate byte code. According to sun, Java speed is comparable to the native C/C++. Java architecture is also designed to reduce overheads during runtime. Further, the incorporation of multithreaded enhances the overall execution speed of Java programs. Dynamic and extensible:
Dept of CSE, SJCIT 14 2007-2008
Literature Survey
Java is a dynamic language. Java is capable of dynamically linking in new class libraries, methods and objects. Java can also determine the type of class through a query, making it possible to either dynamically link or abort the program, depending on the response. Java programs support functions written in other languages such as C and C++. These functions are known as native methods. This facility enables the programmers to use the efficient functions available in these languages. Native methods are linked dynamically at runtime. JAVA AND INTERNET Internet helped catapult Java to the forefront of programming, and Java, in turn has had a profound effect on the Internet. The reason for this is quite simple: Java expands the universe of objects that can move about freely in cyberspace. In a network too very broad categories of objects are transmitted between the server and your personal computer: passive information and dynamic, active programs. As desirable as dynamic, networked programs are, they also present serious problems in the area of security and portability. Prior to Java, cyberspace was effectively closed to half the entities that now live there. As you will see, Java address those concerns and, by doing so, has opened the door to an exciting new form of program: the applet.
JAVAS MAGIC: THE BYTECODE: The key that allows Java to solve both the security and the portability problems just described is that the output of a Java compiler is not executable code. Rather, it is Byte code. Byte code is a highly optimized set of instruction designed to be executed by the Java runtime system, which is called the Java Virtual Machine (JVM). That is, in its standard form, the JVM is an interpreter byte code. In fact, most modern languages are designed to compiled, not interpreted mostly because of performance concerns. The fact that a Java program is executed by the JVM helps solve the major problems associated with downloading programs over the Internet.
15
2007-2008
Literature Survey
Translating a Java program into Byte code makes it much easier to run a program in a wide variety of environments. The reason is straightforward: only the JVM need to be implemented for each platform. Once the runtime package exists for a given system, any Java program can run on it. Remember, although the details of the Java program were compiled to native code, then different versions of the same program would have to exist for each type of CPU connected to the Internet. This is, of course, not a feasible solution. Thus the interpretation of byte code is the easiest way to create truly portable programs. The fact that a Java programs is interpreted also helps to make it secure. Because the execution of every Java program is under the control of the JVM, the JVM can contain the program and prevent it from generating side effects outside of the system. As you will see, safety is also enhanced by certain functions that exist in the Java language. When a program is interpreted, it generally runs substantially slower than it would run if compiled to executable code. However, with Java, the differential between the two is not great. The use of byte code enables the Java, runtime system to execute programs much faster. Java was designed for interpretation; there is technically nothing about Java that prevents on-the-fly compilation of byte code into native code. Along these lines, Sun supplies its Just in Time (JIT) compiler for byte code, which is included in the Java 2 release. When the JIT compiler is part of the JVM, it compiles byte code into executable code in real time, on a piece-by-piece, demand basis. It is important to understand that it is not possible to compile an entire Java program into executable code all at once, because Java performs various runtime checks that can be done only at runtime. Instead, the JIT compiles code, as it is needed, during execution. However, the Just-In-Time approach still yields a significant performance boost. Even when dynamic compilation is applied to byte code, the probability and safety features still apply, because the runtime system still is in charge of the environment. Whether your java program is actually interpreted in the traditional way or compiled On-The-Fly, its functionality is the same.
Dept of CSE, SJCIT 16 2007-2008
Literature Survey
HOT JAVA: Hot java is the web browser from Sun Microsystems that enables the display of interactive content on the Web, using the java language. Its biggest draw is that it was the first Web browser to provide support for the Java language, thus making the web more dynamic and interactive. HARDWARE AND SOFTWARE REQUIREMENTS: Java is currently supported on Windows 95, Windows NT, Sun Solaris, Macintosh, and UNIX machines. Though, the programs and examples in this book were tested under Windows 95, the most popular operating system today, they can implemented on any of the above systems. The minimum hardware and software requirements for Windows 2000 version of Java are follows:
IBM - compatible 486 system. Minimum of 8 MB memory Windows 2000 software A Windows-compatible and sound card, if necessary. A Hard drive. A CD-ROM drive. A Microsoft-compatible mouse. JAVA ENVIRONMENT: Java environment includes a large number of development tools and hundreds of classes and methods. The development tools are part of the system known as Java Development Kit (JDK) and the classes and methods are part of the Java Standard Library (JSL), also known as the Application Programming Interface (API). JAVA DEVELOPMENT KIT:
17
2007-2008
Literature Survey
The Java Development Kit comes with a collection of tools that are used for developing and running Java programs. They include: Applet viewer (for viewing Java applets) Javac (Java compiler) Java (java interpreter) Javap (java disassembler) Javah (for C header files) Javadoc (for creating HTML documents) Jdb (Java debugger)
JAVA DEVELOPMENT TOOLS Tools Applet viewer Description Enables us to run Java applets (without actually using a Java-compatible browser). Java Java interpreter, which runs applets and application by reading and interpreting byte code files.
18
2007-2008
Literature Survey
Javac
The Java compiler, which translates Java source code to byte code files that the interpreter can understand.
Javadoc
Javah Javap
Produces header files for use with native methods. Java disassembler, which enables us to convert byte code files into a program description.
Jdb
The way these tools are applied to build and run application program is illustrated in the following figure.
Text Editor
Java Source
Javadoc
HTML Files
Javac
Java Class
Javah
Header Files
Java
Jdb
19
2007-2008
Literature Survey
To create a Java program, we need to create a source code file using a text editor. The source code is then compiled using the Java compiler javac and executed using the Java interpreter java. The java debugger jdb is used to find errors, if any, in the source code. APPLICATION PROGRAMMING INTERFACE: The java standard library (or API) includes hundreds of classes and methods grouped into several functional packages. Most commonly used packages are: Language Support Package : A collection of classes and methods required for implementing basic features of Java.
Utilities Packages : A collection of classes to provide utility functions such as date and time functions. Input/Output Packages: A collection of classes required for input/output manipulation. Networking Packages: A collection of classes for communicating with other computers via internet. AWT Package: The Abstract Window Tool package contains classes that implements platformindependent graphical user interface. Applet Package: This includes a set of classes that allows us to create Java applets. The use of these library classes will become evident when start developing java programs.
20
2007-2008
Literature Survey
JAVA PROGRAMS: A few type of java applications are listed below: Applications that do not use Graphical User Interface (GUI): They are similar to traditional programs written in C and C++. Applications using GUI These are similar to the applications described above, but they have graphical user interfaces. These applications are used in the Windows environment. Applets These programs run on a web page and require a java-enabled browser like Internet explorer or Netscape navigator. Applets are the programs that you running on web page. Servlets Servlets do not have graphical user interfaces. They are widely used to extend the functionality of web servers. Packages Packages are collections of classes that can be shared by applications and applets.
21
2007-2008
Literature Survey
22
2007-2008