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 352


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

Java: Packages - Importing

Go to all tips in Java Installation, tunning, options...
Multiple classes of larger programs are usually grouped together into a package. Packages correspond to directories in the file system, and may be nested just as directories are nested.

Using existing packages

Java libraries are organized in packages (directories). The most common way to get access to them is to use the import statement. For example,
import java.util.*;
. . .
ArrayList students;  // ArrayList is a class in java.util
gives your program access to the all (that's what the "*" means) classes in the package java.util. The source files for these classes are in a directory named util, which is in a directory named java.

Importing classes explictly

If you need only one class from a package, eg ArrayList, you can write

import java.util.ArrayList;
. . .
ArrayList students;  // same as above.

You might think that importing all classes from a package is inefficient, but there is no noticeable difference in my experience. Consequently most programs use the ".*" style of import.

Using package qualifiers instead of imports

The import statement is not required. Class references can be made but explicit qualification with the "." operator. For example,
java.util.ArrayList students;  // fully qualified.  No need for import.

The fully qualified style is used in some textbooks, but is generally not used when programming, where the import style is almost universal.

However, there is one situation where qualification is necessary - when two classes have the same name, but are in different packages. For example, there is both java.util.Timer and java.swing.Timer. Because it's common to import all classes in both java.util and java.swing, the name Timer is ambiguous and can't be used without qualification.

import java.util.*;
import java.swing.*;
. . .
Timer t;  //AMBIGUOUS - compilation error
java.util.Timer t;  // OK

Packages within packages require additional imports

The import statment gives access to classes in a package, but not to packages in that package. For example,

import java.util.*;
does not give access to the classes of the package java.util.regex. To access classes in java.util and java.util.regex, import both.
import java.util.*;
import java.util.regex.*;

Java's import is not the same as C++'s #include

C++'s #include is commonly used to for library headers, but the mechanism which is used is fundamentally different. #include inserts the entire source file that is referenced into your C++ program. In contrast, the Java import statement only looks up the the identifiers and their declarations from the compiled class file (not the source files).

Another difference is that Java imports are non-transitive. If class A imports packagex and packagex imports packagey, class A does NOT get access to packagey. In C++, the imports are transitive, which can lead to some unexpected effects.

A minor difference is that Java's import is a statement and requires a semicolon, unlike C++.



3 comments | Printer Friendly Page  Send to a Friend | Score: 1
Posted by jalex on Thursday, April 28, 2005 (00:00:00) (5552 reads)

Java: Applets

Go to all tips in Java Applets

Why no applets in these notes

These notes were originally written using applets almost entirely. However, all applet examples are being changed to applications.

  • The only really portable applets are written in Java 1.1 because this is the minimum assumption about what is installed on a user's computer. Java has moved far beyond that. I'm not interested in programs that are limited to the older, and seriously inferior, AWT. Yes, Java plugins can be used for the more recent versions, but it can still be a problem. To get around this, many books that teach applets suggest using the appletviewer program thereby negating the supposed applet advantages.
  • In a controlled environment, such as a large company, it's possible to use later versions of applets, but they aren't the best idea for general examples.
  • Many current applets should instead be animated GIFs, JavaScript, or Flash.
  • Assuming the later versions of Java are used, most applet source will look similar to application code. However, there are some divergences that are annoying: the common practice of init instead of a contructors, the fixed size as opposed to using pack, lack of I/O capability (without permissions), ... It's even worse when using Java 1.1 because the lack of a content pane distorts the program.
  • Java WebStart is a better solution to web distributed software.
  • The primary use of Java has turned out to be applications, not applets as predicted by the initial hype.

Converting Applets to Applications

To make an applet into an application, add a main()method to the applet's class -- you don't have to create a new class. It may seem a little strange that adding a main method to a class will make it into an application, but that's the most common way of doing it. An application is any program that has a main() method. This new main() does what a browser does.

The main method should do the following:

  1. Create a window (JFrame) to hold the applet.
  2. Make the window's close box stop the applet.
  3. Create a new applet object, and add it to the window.
  4. Start the applet by calling init(), then start().
  5. Finalize the layout.
  6. Make the window (with the applet in it) visible.

Example

------ Continues (click the link below)


Here is a very small applet, which just displays some text.

import javax.swing.*;

public class SampleApplet extends JApplet {
    public SampleApplet() {
        add(new JLabel("This is an Applet."));
    }
}

Add a main() method, and it can be used as either an application or an applet.

import java.awt.*;
import javax.swing.*;

public class SampleApplet extends JApplet {
    
    public static void main(String[] args) {
        JFrame myWindow = new JFrame("SampleApplet Application");
        myWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        SampleApplet theApplet = new SampleApplet(); // Create a new object.
        myWindow.setContentPane(theApplet);  // Add to the window.
        //theApplet.init();           // Needed if defined in applet
        //theApplet.start();          // Needed if defined in applet
        myWindow.pack();              // Arrange the components.
        myWindow.setVisible(true);    // Make the window visible.
    }
    
    // Constructor
    public SampleApplet() {
        add(new JLabel("This is an Applet and and Application!"));
    }
}
  • You can use this as an applet and the browser will ignore main().
  • Although SampleApplet is the name of the class, we need to create an instance of it. An applet is a kind of panel, so it can be used for the contentPane in a JFrame.
  • Usually only applets which do animation have a start() method. If your applet doesn't have a start() method, you don't need this call, although it won't cause problems because JApplet has defined a version that does nothing. Similarly with init() which is commonly used in applets, altho a constructor would be a better choice. If there is no init(), there's no need to call it.

Some applets may use features that require additional work.

  • An applet can call getCodeBase() to find out where it was loaded from to get additional classes, images, or other data, then use the return value to get more things. If an applet does this, then you must define getCodeBase().
  • If an applet gets parameters from the web page, you will have to provide a getParameter() method.
  • The showStatus() method must be supplied if used by the applet.

The HTML tag

You need to specify the following values in an applet tag.

  • width="nn" height="mm", where nn and mm are the width and the height of the area the applet will occupy on the web page. Applets are not resizeable (except when run with the appletview application. But if you're using appletviewer, why are you writing an applet?
  • Class file location. There are several possibities.
    Simple class files
    Jar file

3333 bytes more | 4 comments | Printer Friendly Page  Send to a Friend | Score: 0
Posted by jalex on Wednesday, April 27, 2005 (00:00:00) (3837 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