Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 
Search the JavaFAQ.nu
1000 Java Tips ebook

1000 Java Tips - Click here for the high resolution copy!1000 Java Tips - Click here for the high resolution copy!

Java Screensaver, take it here

Free "1000 Java Tips" eBook is here! It is huge collection of big and small Java programming articles and tips. Please take your copy here.

Take your copy of free "Java Technology Screensaver"!.

Easy Learn Java: Programming Articles, Examples and Tips - Page 472


Previous 1060 Stories (530 Pages, 2 Per Page) Next

Interfaces in Java: Very easy to read overview

Go to all tips in General Java

Interfaces in Java

In Java, a class can have at the most one immediate superclass. Multiple inheritance, where a class has more than one superclass, is not allowed in Java. However, one cannot ignore the importance of multiple inheritance because a large number of real-life applications require the use of multiple inheritance. Java provides an alternative approach to support multiple inheritance by introducing a new data type known as interfaces. Although a class cannot inherit multiple classes, it can implement more than one interface.


An interface declaration in Java introduces a new data type. An interface is a named collection of abstract methods and constants. Interfaces are syntactically similar to classes, except that they contain only abstract method declarations and constants. They are defined with a source code file with the .java extension that is compiled to a class file in the same way as classes. In Java, interfaces provide a convenient alternative to multiple inheritance.

The body of an interface declares a set of methods but does not provide their implementations. A class that implements an interface has a legal binding to implement all the methods defined in the interface, thereby agreeing to a certain behavior. A class can be declared to implement any number of interfaces by using the keyword implements followed by one or more interfaces.

Defining an Interface

An interface is defined using the syntax given below:

access_modifier interface interface_name extends Super_interfaces{
    return_type method1(parameter_list);
    . . .
    return_type methodn(parameter_list);
    datatype variable1 = value;
     . . .
    datatype variablen = value;
}

The syntax defined above has two components:the interface declaration, and the body of the interface.They are discussed in the following sections:

The interface declaration

An interface declaration consists of the following components:

  • access_modifier: An interface can be declared by using the public access modifier or without any access modifier. When an interface is declared as public, it can be accessed by any class in any package. If no access modifier is used in the declaration, the interface is accessible only within the package in which it is declared.
  • interface interface_name: The keyword interface in the declaration tells the compiler that it is an interface declaration and name of the interface is the one that follows the interface keyword. The name of an interface must be a valid identifier.
  • extends Super_interfaces: An interface can extend other interfaces in the same way as a class extends another class. The only difference between these two is that where a class is allowed to extend only one class, an interface can extend any number of interfaces. The extends keyword in an interface declaration tells the compiler that the interface extends the list of interfaces that follows the extends keyword.

The interface bodyThe interface body contains method declarations for all the methods included in the interface. A method declared within an interface does not have a body, i.e., the method declaration ends with a semicolon. This is because an interface does not provide implementations for the methods declared within it. Apart from method declarations, an interface contains constant declarations.

All the constants defined in an interface are by default static and final. Therefore, there is no need to explicitly use these keywords to declare variables inside the interface body. All methods and variables in an interface are implicitly public if the interface is declared as public. It is also not necessary to declare the methods as abstract as well.

Member declarations in an interface disallow the use of some declaration modifiers, i.e., the following modifiers cannot be used to declare members in an interface:

  • transient
  • volatile
  • synchronized

Also, the private and protected access modifiers cannot be used to declare members of an interface. The following example demonstrates how to define an interface:

public interface MyInterface{
    void method1();
    int method2(int k);
    int x = 1; int y = 2;
}

Implementing Interfaces:

When an interface has been defined, any number of classes can implement it. A class implements an interface by using the implements keyword followed by the interface name in its declaration part. A class that is declared to implement an interface provides definitions of all the methods declared in the interface. The following example shows the structure of a class named F0014 that implements the java.lang.

Runnable interface:

public class F0014 implements Runnable{
    public void run(){
        //statements
    }
}

The Runnable interface is defined in the java.lang package. This interface declares a single method with the following signature:

public void run();

The F0014 class implements it by using the implements keyword followed by the interface name, and then provides the definition of the run() method with the following signature:

public void run(){
}

The run() method implemented by the class must be declared as public with a return type of void or else a compile-time error will occur.

A class can implement any number of interfaces at a time. Considering this case, if the F00014 class wants to implement more than one interface, a list of interfaces can be put after the implements keyword with a comma in between two interfaces.

Partial implementations of an interface by a class:

If a class implements an interface but does not provide implementations for all the methods defined in that interface, that class must itself be declared as abstract or else a compile-time error will occur.

For example,

abstract class F0014A implements MyInterface{
    int s, t;
    public void method1(){
    }
}

Here, the class does not implement all the methods declared in the MyInterface interface (defined earlier) and hence is declared as abstract.

An interface can extend another interface:

An interface can inherit another interface by including in its declaration the extends keyword followed by interface name (to be inherited) in the same way as a class extends another class. When a class implements such an interface (i.e., an interface that extends another interface), it must provide implementations for all the methods defined in the interface as well as methods defined in the superinterface.

About the Author:

uCertify was formed in 1996 with an aim to offer high quality educational training software and services in the field of information technology to its customers. uCertify provides exam preparation solutions for the certification exams of Microsoft, CIW, CompTIA, Oracle, Sun and other leading IT vendors. To know more about uCertify, please visit http://www.ucertify.com/ 


7499 bytes more | comments? | Printer Friendly Page  Send to a Friend | Score: 0
Posted by Anonymous on Friday, September 08, 2006 (12:10:09) (4081 reads)

Easy Deployment of Real-Time Java for Linux

Go to all tips in Java Tools

Developers of real-time Java™ applications must ensure that, during execution of their application, there are no unpredictable delays caused by class loading.

Traditionally, this problem has been resolved by manually loading classes in advance, which is an error-prone and cumbersome process that requires updating when the application is modified. Another approach is to preload all the classes, but that unfortunately takes significantly more time and space.


IBM Real-Time Class Analysis Tool for Java lets developers deploy their Java applications without manually defining classes that should be preloaded. This tool for Linux (Red Hat and SuSe) and Windows scans the Java bytecode and the classes that it uses then generates a Java source to preload and pre-compile all these classes.

IBM Real-Time Class Analysis Tool for Java provides real-time developers with a means of deploying their Java applications without manually defining the classes that should be preloaded.

In order to determine the list of classes that the application will actually use and reference, this tool scans the Java bytecode of the user's application as well as the classes that it uses. The tool then generates a Java source file containing a static method that can be called by the application to preload and, optionally, pre-compile all these classes.

This technology runs on Linux® (Red Hat or SuSE) and Windows®.

How does it work?

The tool reads the bytecode for the main method of the application and then proceeds to locate all methods that can be called by the main method. This process is repeated recursively until all methods have been loaded. Three key areas are tricky to handle:
  • A method or an interface dispatch could go to many targets since Java is an object-oriented (OO) language. The algorithm is conservative and assumes all possible targets could be taken.
  • A native method could call back into Java classes. The tool cannot 'see' native methods, so the application user can provide proxy classes that describe the classes reachable from these native methods. An initial set of proxy classes for the IBM JDK 5.0 JVM is provided, but it is currently incomplete.
  • A set of methods that call Class.forName () have similar problems to native methods, and a similar solution is provided: The user can provide proxy classes for these methods. Considerable effort has been made to optimize the analysis process so that it is completed in a reasonable amount of time. Several controls enable the user to cache results from previous runs for faster analysis.

In addition, a Java class interface is provided so that the user can extend and augment the general services provided by the tool.

What is real time in Java?

Real-time support, or more appropriately, support for a tightly deterministic execution environment within a JVM has become an increasingly important element of IBM’s Java strategy. The foundational base for this real-time solution is our real-time J9 Java Virtual Machine (JVM) extended with the IBM’s Metronome real-time garbage collection technology, Ahead of Time compilation (AOT), and full support for RTSJ, all executing on an RT Linux operating system currently under development.

Real-Time Definition

Critical to any understanding of a real-time solution is a basic definition. The first misconception is that real-time is minimal application latency and/or maximum data throughput. These are important attributes in any mission critical system or application but real-time is foremost about determinism. This critical characteristic is the defining requirement and is not just for time epochs in the nanosecond or microsecond range but also sub-second response times on the order of hundreds of milliseconds. Nor is real-time solely for embedded applications and systems.

There is a growing need for enterprise determinism that can choreograph multiple events across a heterogeneous distributed infrastructure, ensuring a well-defined end–to–end response time. An example would be a real-time application with a periodic task that executes once a week at a precise microsecond response window with less than a 10% jitter. Therefore the need for guaranteeing deterministic behavior across a distributed enterprise is crucial for mission critical systems.


4105 bytes more | comments? | Printer Friendly Page  Send to a Friend | Score: 0
Posted by Anonymous on Thursday, September 07, 2006 (05:15:06) (2228 reads)

Previous 1060 Stories (530 Pages, 2 Per Page) Next

530| 529| 528| 527| 526| 525| 524| 523| 522| 521| 520| 519| 518| 517| 516| 515| 514| 513| 512| 511| 510| 509| 508| 507| 506| 505| 504| 503| 502| 501| 500| 499| 498| 497| 496| 495| 494| 493| 492| 491| 490| 489| 488| 487| 486| 485| 484| 483| 482| 481| 480| 479| 478| 477| 476| 475| 474| 473|
472
| 471| 470| 469| 468| 467| 466| 465| 464| 463| 462| 461| 460| 459| 458| 457| 456| 455| 454| 453| 452| 451| 450| 449| 448| 447| 446| 445| 444| 443| 442| 441| 440| 439| 438| 437| 436| 435| 434| 433| 432| 431| 430| 429| 428| 427| 426| 425| 424| 423| 422| 421| 420| 419| 418| 417| 416| 415| 414| 413| 412| 411| 410| 409| 408| 407| 406| 405| 404| 403| 402| 401| 400| 399| 398| 397| 396| 395| 394| 393| 392| 391| 390| 389| 388| 387| 386| 385| 384| 383| 382| 381| 380| 379| 378| 377| 376| 375| 374| 373| 372| 371| 370| 369| 368| 367| 366| 365| 364| 363| 362| 361| 360| 359| 358| 357| 356| 355| 354| 353| 352| 351| 350| 349| 348| 347| 346| 345| 344| 343| 342| 341| 340| 339| 338| 337| 336| 335| 334| 333| 332| 331| 330| 329| 328| 327| 326| 325| 324| 323| 322| 321| 320| 319| 318| 317| 316| 315| 314| 313| 312| 311| 310| 309| 308| 307| 306| 305| 304| 303| 302| 301| 300| 299| 298| 297| 296| 295| 294| 293| 292| 291| 290| 289| 288| 287| 286| 285| 284| 283| 282| 281| 280| 279| 278| 277| 276| 275| 274| 273| 272| 271| 270| 269| 268| 267| 266| 265| 264| 263| 262| 261| 260| 259| 258| 257| 256| 255| 254| 253| 252| 251| 250| 249| 248| 247| 246| 245| 244| 243| 242| 241| 240| 239| 238| 237| 236| 235| 234| 233| 232| 231| 230| 229| 228| 227| 226| 225| 224| 223| 222| 221| 220| 219| 218| 217| 216| 215| 214| 213| 212| 211| 210| 209| 208| 207| 206| 205| 204| 203| 202| 201| 200| 199| 198| 197| 196| 195| 194| 193| 192| 191| 190| 189| 188| 187| 186| 185| 184| 183| 182| 181| 180| 179| 178| 177| 176| 175| 174| 173| 172| 171| 170| 169| 168| 167| 166| 165| 164| 163| 162| 161| 160| 159| 158| 157| 156| 155| 154| 153| 152| 151| 150| 149| 148| 147| 146| 145| 144| 143| 142| 141| 140| 139| 138| 137| 136| 135| 134| 133| 132| 131| 130| 129| 128| 127| 126| 125| 124| 123| 122| 121| 120| 119| 118| 117| 116| 115| 114| 113| 112| 111| 110| 109| 108| 107| 106| 105| 104| 103| 102| 101| 100| 99| 98| 97| 96| 95| 94| 93| 92| 91| 90| 89| 88| 87| 86| 85| 84| 83| 82| 81| 80| 79| 78| 77| 76| 75| 74| 73| 72| 71| 70| 69| 68| 67| 66| 65| 64| 63| 62| 61| 60| 59| 58| 57| 56| 55| 54| 53| 52| 51| 50| 49| 48| 47| 46| 45| 44| 43| 42| 41| 40| 39| 38| 37| 36| 35| 34| 33| 32| 31| 30| 29| 28| 27| 26| 25| 24| 23| 22| 21| 20| 19| 18| 17| 16| 15| 14| 13| 12| 11| 10| 9| 8| 7| 6| 5| 4| 3| 2| 1|


Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy