text:
Web Programming Unleashed
Chapter 6
Java Development Environments
by Dan Joshi
- Java Development Environments
- The Java Developer's Kit (JDK)
- Symantec Café
- The Borland Internet Products
- The Java Workshop
- Summary
This chapter explores how to write programs more effectively in
Java. In the last several months, many major software development
companies have been designing Java development environments for
programmers to work in so that programmers would not need to have
a text editor and the Java Developer's Kit. This chapter gives
you an overview of several of these integrated development environments
(IDE) that have greatly improved on the Java Developer's Kit (JDK).
An integrated development environment is one program that contains several tools. Each of these tools (for example, a debugger and class viewer) helps you throughout the development cycle as you create or modify a program. Because integrated development environments are GUI-based, they are easy to use, and because these environments usually contain many tools, they are extremely useful.
The Java Developer's Kit is the first and probably the most wide-spread
development environment currently available for Java. It is merely
a set of command-line tools in which programs authored in a text
editor are saved in ASCII format. These source files are compiled
and debugged using command-line executables provided with the
Java Developer's Kit. The Java Developer's Kit is the first topic
discussed in this chapter, but you learn other environments such
as the Java Workshop, Symantec Café, and some of the newer
Internet-related tools from Borland. These newer programming environments
are based on the integrated development environment paradigm.
In these new environments, everything is designed around a GUI
form. If you are a programmer new to Java, I hope that by the
end of this chapter you will be able to make an informed decision
about several of the major environments available. On the other
hand, if you are a proficient Java programmer, you will have a
better understanding of the pros and cons for each of these new
Throughout this chapter, there are three types of terms to describe Java-compiled classes. An "applet" is an Internet-based Java class file. A Java "program" is a stand-alone Java class file. The term "application" refers to both Java applets and programs.
Before beginning, I should point out several high-level points, particularly your knowledge of Java that is assumed in the chapter and what will be presented. First, I assume in this chapter that you have an understanding of Java and, in some cases, an understanding of C/C++. If this is true of your skill set, continue reading this chapter. If this is not true, however, review Chapter 7 "Introduction to Java," and Chapter 8 "Java Programming," and then return to Chapter 6because those chapters give you an introduction to Java language syntax, building basic Java applets, and comparing Java to C/C++.
Second, I highly recommend that you have the development environment available to follow along for each of the environments discussed in this chapter. This chapter is littered with notes, warnings, and figures on how the environments look and how they respond to various real-life programming situations. Nonetheless, in some demonstrations (for example, the Java Workshop), you actually go through the process of writing a sample applet. Finally, note that all of the environments you learn in this chapter are installed and tested for the Windows 95 and Windows NT platform, primarily because Symantec Café does not have a non-Windows version for its Java integrated development environment.
Java Development Environments
One of the most intimidating things about Java when it was first released was the fact that there were no "modern" integrated development environments with which to compile Java-related programs. For veteran programmers, that was not an issue, but for the newer programmers who might have never authored code in a text editor, it made Java appear very intimidating. As a solution, many of the major software companies started designing a kind of proprietary Java development environment to make it easier in which to code. As a result, this chapter is designed to discuss some of those major development environments.
This chapter explores the strengths and weaknesses of each of the development environments. To start off, you learn the Java Developer's Kit as an initial place to break ground. After all, every one of these new integrated development environments that is covered is based on the original Java Developer's Kit. Also, the Java Developer's Kit is what you will use in the next two chapters to design and run sample Java programs.
The Java Developer's Kit (JDK)
You use the Java Developer's Kit (also known as the JDK) in the
next several chapters to test and develop all of the programs
and applets for Java. The JDK was chosen primarily because most
Java programs are very simple and the JDK's availability gives
the greatest flexibility. The JDK contains a full copy of the
Java language, including a complete set of all built-in classes
used in Java. The JDK also contains all the source code for these
built-in classes. Suffice it to say that when you download the
JDK, you have a fully functional, object-oriented Java programming
language. However, you do not have a nice front-end environment
in which to develop, nor an Internet browser to test your Java-powered
HTML pages. Instead you get a program called the appletviewer
that can read information only inside the <APPLET>
tag in an HTML page.
For more information on using HTML tags with Java, see Chapter 8
In fact, with the JDK, you really don't get any front end at all. All code must be written in some sort of proprietary text editor or word processor that can save to ASCII format. To do just about anything in the JDK, you must write code. In other words, with the JDK, you do not have any wizards, toolboxes, or Java code generators to point and click your way to Java computing.
The latest version of the JDK at the time of this writing is version 1.0.1. You can obtain this version for free from Sun's home page at the following site:
The JDK is available for Windows 95, Windows NT, Sun's Solaris
2.4 or higher, and now the Macintosh. Although each of these JDK
versions is extremely similar, there might be some minor differences
between them. To remain consistent with the rest of the chapter,
we will use the 32-bit Windows version of the JDK (that is, the
JDK for Windows 95 and Windows NT). Installing the JDK for 32-bit
Windows is fairly simple. Download the self-extracting file from
the preceding address, run the self-extracting executable, and
it will do the rest. (Let me be the first to pass my condolences
to those who were expecting the InstallShield wizard.)
InstallShield is a third-party product (from InstallShield Corp.) used to standardize the installation of a program. Its features include a completely point-and-click interface with which users can move through the installation of a program and an uninstall utility with which users can easily remove the product from their systems.
InstallShield is rapidly becoming the industry standard for software companies that use it to guide their users through installing their programs. The InstallShield is featured in the Java Workshop, Symantec Café, Borland C++ 5.0, and most likely it also will be bundled with Borland Latte when it is officially released.
When you have successfully installed the JDK, you are ready to
begin. The JDK 1.0.1 compressed is about 4.4MB; after running
the self-extracting executable, it should take no more than 7MB
of space.
One advantage of the JDK over all the integrated development environments is that it takes the least amount of space when it is uncompressed.
How To Use the Java Developer's Kit
Using the JDK can be pretty simple. Figure 6.1 shows the JDK directory structure after installing it on the E:\ drive.
Figure 6.1 : The Java Developer's Kit directory structure.
After you run the JDK, you can see that it creates a directory
called ..\java. As you can see in Figure 6.1, the first
thing to notice in the ..\java is the file src.zip.
This file contains the zipped source code for the JDK classes.
All built-in Java classes are written in Java.
Next, you learn the demos that come with the JDK. In Figure 6.1, you see the subdirectory ..\demo. The demos located in that directory can be invaluable tools in learning about the language. Also, the JDK is set up so that a browser can locally access it. A file called index.htm is in the ..\java directory. Load that HTML page in a Java-compliant browser (for example, Netscape 2.0 or later). Figure 6.2 shows index.htm loaded.
Figure 6.2 : The index.htm file in the Java Developer's Kit.
Referencing Figure 6.2 in index.htm, you see a link to applet examples. Click this link to bring up a directory listing of all the demos that come with the JDK. Click the directory animator to see the directory containing all the pertinent information for the animator applet. Finally, load the file example1.htm to load the animator applet shown in Figure 6.3.
Figure 6.3 : Animator example (..\java\demo
If you look at the bottom of the applet, you will see a link to the source code for this applet. In the animator example in Figure 6.3, this opens up the file animator.java, located in the ..\demo\animator subdirectory, which shows the source code for this applet. Although this is not exactly a full-blown tutorial with all the bells and whistles available in the other integrated development environments that are demonstrated in this chapter, these examples give you valuable information for learning Java.
The next directory in Figure 6.1 that you learn briefly is the
..\java\lib directory. Looking in the ..\lib
directory, the first thing to notice is the javac.properties
file. This file is saved in a viewable format. Inside, you will
see a long list of all the error messages from which the Java
compiler draws during the compilation process to describe the
errors it encounters when compiling your Java program. There is
also a file called javai.lib, which is a library file
used by the interpreter. The next file, javai_g.lib,
is another copy of the javai.lib except that it is used
to debug your Java programs. You learn more later in this section.
Any executable with a _g at the end of its name in the JDK means that it is a nonoptimized version of the same executable designed for use with the Java debugger.
The last file is classes.zip. If you look at the readme file located in the ..\java directory (refer to Figure 6.1), it says that you should not unzip this file. It is used by the Java compiler in this compressed form and contains the compiled class files for the built-in classes in Java.
The next and probably most significant directory for the JDK is the ..\bin directory, which contains all of the command-line executables used to develop Java programs in the JDK.
The ..\java\bin Directory
The ..\java\bin directory contains all of the executable
tools used in the JDK as well as the DLLs that are used by these
executables. Note that some of the tools are designed specifically
for advanced programming techniques and are discussed only briefly.
A DLL or Dynamic Link Library is simply a compiled function that programs can call.
The javac.exe File
You will see many executables in the directory ..\java\bin. The first, javac.exe, is probably the most important tool in the JDK because it compiles the Java source code files into Java bytecodes. You will have a chance to work with the Java compiler in the next two chapters. The source files must be named with the extension .java when they are compiled by javac.exe. By default, all files compiled will be placed in the same directory as the source file. However, you can use javac.exe to compile programs and place the class files in another directory by using the -d option:
javac -d e:\test c:\ABClass.java
In the preceding line of code, you see that by using the -d option on the fictitious class ABClass.java, it will compile the class file and place it in the e:\test drive. The javac.exe also can utilize the -g option, which gives you the capability of creating debugging tables.
The parameter that can be passed during compilation is the -O
(the letter not the number) option, which can be used to optimize
your compiled code.
Specifically, the -O option optimizes your Java application by in-lining all static, final, and private methods. In C/C++, an in-line function is a small function whose code resides in the line of declaration (or prototype) rather than being called externally by the program. Efficiency is the advantage of in-line functions in C/C++ and Java because the application does not spend several cycles externally calling the function when the application is executed.
The next parameter I should mention is the -verbose parameter, which causes the compiler and linker to print out information about the source files being compiled, the classes being loaded, and the length of time it took to do each process.
The -nowarn parameter tells the Java compiler to skip
over warnings instead of printing them out and stopping compilation.
A warning is an error found by the compiler that does not merit immediate attention to run the Java program.
The last parameter is the -classpath parameter. In the
compiler, this option specifies the path in which the compiler
should point to reference classes in Java. The following shows
a breakdown and summary of all the available compiler options
in Java:
|-classpath <path>
|Specifies the location of class files to the compiler.
|-d <directory>
|Specifies the destination directory for the compiled class file.
|Enables the creation of debugging tables.
|Disables warnings.
|Optimizes the code by in-lining static, final, and private methods.
|Displays information about the source files being compiled, the class files being loaded, and the length of time each step took.
The java.exe
The java.exe is the interpreter for compiled Java programs. The interpreter will work only with compiled class files, not the source files. Do not specify the .class extension for the class file that you want to interpret. The Java interpreter works by converting the bytecodes of the specified class file to processor-specific machine code so the client's system can execute it. An example of using the interpreter on the fictitiously created class ABClass.class follows:
java ABClass
The interpreter essentially looks for two things: the file passed containing compiled bytecodes and the location of the method main from which it can execute the body of the Java program. As in the javac.exe compiler, the interpreter also has the same functionality with the -classpath option. Also note the -debug option in the Java interpreter. This option enables the Java debugger to attach itself to this session, which is very useful in debugging programs.
Another useful option is the -cs option, which actually causes the interpreter to compare the loaded class file to the loaded source file. If the source file has a more recent date, then the -cs option will recompile that file. This option can be very useful in making sure that the compiled files you are interpreting are the most up-to-date classes.
Next, note the -noasyncgc option, which toggles off the
asynchronous garbage collection for this session. When this tool
is activated, Java will not run a separate thread for garbage
collection. In fact, Java will not run garbage collection at all
unless it runs out of memory completely or the program explicitly
calls to activate it. Along the same lines of garbage collection
is the option -verbosegc. This parameter is very similar
to the -verbose parameter mentioned with the javac.exe
compiler except that it is designed to display information about
the garbage collector whenever it has free memory. The following
gives you a quick reference for the garbage-collection-related
options with the Java interpreter:
|Turns off the asynchronous garbage collection.
|Prints information pertaining to memory freed by the garbage collector.
For more information on the garbage collector, see Chapter 5 "Java and the Internet."
Other parameters that are available are -verify, -noverify,
and -verifyremote. These parameters all are made possible
because Java utilizes bytecodes. The -verify and -noverify
toggle on or off the verification of all Java code. The -verifyremote
parameter, which is the default if nothing is explicitly specified,
verifies only code that is loaded into the system via a special
class loader. Use the following list as a quick reference to this
set of parameters:
|Disables all bytecode verification.
|Enables bytecode verification for classes loaded into the system by a separate class loader.
|Enables all bytecode verification.
Another parameter available to the Java interpreter, -version, specifies the version and build for the compiled class passed to it. This parameter is very useful in determining the version of Java in which your class file was compiled. For example, currently you are using the JDK 1.0.1 to compile your classes. The following code is an example of what to type to find the version for the class ABClass.class. The second line is an example of the output from the interpreter.
java -version ABClass.class java version "1.0.1"
The next set of options you will learn briefly are the parameters
to specify the stack and heap size for a Java session.
A stack and heap are special regions of reserved memory in which programs can store data (usually local variables). In general, the program, operating system, and microprocessor all can have one or more stacks assigned to them. In the case of Java applications, two stacks are maintained for each thread it is running: one for the C code (referring to any native code from native methods that are used in your application) and another for the Java code.
The data structure for a stack is organized as a LIFO (last in first out) list format. Therefore, the last data item added to the stack will be the first item used.
The following list shows the parameters pertaining to specifying
the stack and for what they are used:
|-mx <number>
|Specifies the maximum size for the Java heap. The default is 16MB.
|-ms <number>
|Specifies the start-up size for the Java heap. The default is 1MB.
|-ss <number>
|Specifies the maximum C stack size for this thread that is used for any native code your Java application might contain.
|-oss <number>
|Specifies the maximum Java stack size for this thread.
You must specify a number after each parameter when you pass values to the various stack options. The interpreter will assume that the specified number is in bytes. However, if you want to specify a larger value (that is, a value in kilobytes or megabytes), then append the letter k for kilobyte or m for megabyte to the numerical value (for example, 512k or 10m).
At this point, you have learned all of the pertinent options and
syntax for the Java interpreter. Still, you can use a few more
parameters with java_g.exe that do not come with java.exe.
These special parameters deal specifically with debugging your
Java programs. The first two are -t and -tm,
which deal with printing a trace on the screen. The -t
parameter, for example, prints out an instruction trace while
-tm prints out a method trace. Also, -prof prints
out profiling data about the specified session to the file java.prof.
The last list for this JDK tool, which specifies all of the options
only available to the java_g.exe file, follows:
|Enables instruction tracing.
|Enables method tracing.
|Prints the profiling data to a file called java.prof.
All options introduced in java.exe are also available to the debugging version, java_g.exe.
The Java Debugger
The jdb.exe file is the JDK's debugging tool, which is attached to an interpreted session. This debugger is designed to attach itself to an interpreted session and execute commands. A full description of this tool is beyond the scope of this book, but it is important to note that you can use jdb.exe to help debug your program. Note, however, that working with jdb.exe has many rewards, because it can enable you to go through your program and execute one line of code at a time, enabling you to set break points to help you see exactly what your code is doing at any time. An example of how to use the default syntax for the debugger follows:
jdb ABClass
One major weakness in the JDK is that it does not have a visual debugger. Instead, it uses the command-line debugger jbe.exe.
Before we can discuss javah.exe and its function in the
JDK, how to effectively use the javah.exe tool, or move
forward with the discussion on the JDK, we should digress and
discuss Java's native methods.
Native methods are C functions used in Java.
Native methods are an advanced programming technique. If you are new to Java or have no experience with C/C++, it is a topic you might want to avoid. Native methods are more complicated than they have to be and are not really that useful except in rare cases. If this has piqued your interest, however, then continue with the following paragraphs for a quick description of native methods and using javah.exe to create native methods.
Native methods give you the power to link C programs to your Java programs. Of course, if computer programming were that simple, then computer programs wouldn't have bugs. Realistically, though, when you use native methods, you lose the ability to port Java programs to multiple platforms. Second, you cannot create applets with native methods because of the security risks involved. Internet browsers do not support native methods, which means that you cannot use native method technology for any kind of Internet-related solution. Third, your Java application (not applet) cannot verify the native code because the native code cannot be compiled to bytecodes.
In those few cases in which using native methods is the only solution, you will need to declare a method, place the keyword native in front of the declaration, and end the method with a semicolon instead of a pair of brackets.
public native void myMethod();
That's all you need to do on the Java side. On the C side, however, you must create your function to implement the method myMethod. This is where javah.exe comes in because you might need to generate C headers from your Java-compiled classes so you can work with these classes in the native environment.
javah ABClass
The last directory shown in Figure 6.1 that you have yet to learn in the JDK is the ..\java\include subdirectory, which includes header files to help you implement your native methods. Writing native methods is not for rookies to Java. Furthermore, the programmer must have a deep understanding of C/C++ as well as Java. Frankly, native methods are so rarely used that they will not be mentioned again.
The javap.exe is a class disassembler; that is, it will
take a compiled file and disassemble its bytecodes back into source
code (ASCII form). The following list shows the options for this
executable. Most options in the list have been discussed with
the other command-line tools and a few new options are fairly
self explanatory. One major problem with the Java disassembler
is that in reality, it is difficult to pull source code from a
compiled class file. Consequently, we won't spend much time discussing
|Disassembles the code (that is, prints out the public method and fields for this program).
|-classpath <path>
|Specifies the directory for javap.exe to look up classes.
|Prints out the private and protected methods and fields of this class.
|Verifies the bytecodes.
|Displays the build version of this class.
With javadoc.exe, a very useful documentary tool in the JDK, you can create HTML pages based on the proprietary classes from your source code. The javadoc.exe tool parses the source files of your classes. This parsing process can include specially designed comments placed in your code. You can include HTML tags in these comments and parse them to the resulting HTML page. It is very useful in creating HTML pages because it will help you and other programmers understand your code. The following is an example of parsing the source file for the fictitious class ABClass:
javadoc ABClass.java
If this line were executed, it would create a file called ABClass.html, an HTML file that you can view as a reference source in any browser. However, the following example exemplifies another powerful feature of javadoc.exe, in which you can pass HTML tags and comments to the HTML pages you create by writing specially designed comments in your code:
/** *Below is a class I created: * <PRE> * javadoc ABClass.java * </PRE> * * @author John Doe * @version 1.0 */
In this example, the beginning and end of the comment is specifically designed to create a special HTML document that will comment on the method coming after it. For example, javadoc.exe uses the first line, /**, to generate the HTML page. Also, the javadoc.exe parser will recognize three parameters within this comment. The first is @param, a special setting used to place a comment just before the method in the HTML page explaining what it does; the @return description, which results in specifying a return for this method; and the @exception, which lists the available exceptions that this method can throw.
The end result is that with this new tool you will be able to generate well-documented classes on your source code. However, of all the development environments that you will learn in this chapter, the command line javadoc.exe is one of the most difficult to work with.
The Appletviewer
The last tool you will learn is the appletviewer. The appletviewer
is used extensively in Chapter 8 Its primary function is to look
for and utilize only the <APPLET> tag in the HTML
page that is passed to it. This tool enables you to view your
applets from its HTML page. The appletviewer generally has proven
itself to be such a functional tool that it is incorporated into
some of the other integrated development environments, such as
Symantec Café.
For more information and examples on using the appletviewer, see Chapter 8
Interestingly, when you first use the appletviewer with the JDK, it will create a directory called .hotjava, and in that directory is a file called properties (see Figure 6.4).
Figure 6.4 : Java Developer's Kit directory with the .hotjava directory added by the appletviewer.
In the .hotjava directory, you will see the file properties,
where you can view and edit the properties for the appletviewer.
Currently, all Java-compliant browsers do not enable you to access the client's computer to read or write files. However, the HotJava browser and the appletviewer have an optional parameter that gives the client the capability to specify access to its system. Along these lines, you can give the HotJava browser or appletviewer access by specifying a directory for the file to have read or write access to the Java applet. You can implement this by adding the following to the properties file:
Java Development Kit Closing Comments
The JDK is not the friendliest environment in which to work, but it certainly is one of the most widely used and is probably the most stable environment in which to develop. Working with the JDK is also a very cost-effective solution because it currently is available for free from Sun. If you want to learn or instruct pure Java syntax, then the JDK will be your best choice. We will reference the JDK throughout the rest of this chapter and also will use it in the following two chapters for real-life demonstrations.
Symantec Café
Symantec Café is an IDDE (integrated development and debugging
environment). Café is Symantec's tool that was designed
to be the next step from Symantec's previous Java development
environment, Espresso.
Espresso is Symantec's wrapper utility for Symantec C++ and was designed to give owners of Symantec C++ the ability to develop Java programs in Symantec C++. It is being replaced by Symantec Café, which is a stand-alone Java Integrated Development Environment.
By the end of this section, you should be able to appreciate the Symantec Café as a very powerful tool to work with in Java. With Café, you can create Java applets and embed them into Web pages. You also can link Café with your existing Web browser (if you have one installed) to view these pages or use the built-in appletviewer to view them as well. Also, Café contains the full object-oriented Java functionality to create stand-alone Java programs. Unlike the Java Workshop, about which you learn a little later, Symantec Café has provided substantial enhancements to the original JDK. However, Symantec has grounded every change it has made to focus on the JDK. Symantec has not made any changes to the built-in class libraries that also come with the JDK.
With Café, you can easily customize just about everything. Probably the most powerful feature is Symantec's version of the Java compiler, a native compiler designed to be much faster than the javac.exe compiler that comes with the JDK. Symantec also utilizes its own DLL for interpreting Java programs, resulting in a much faster running time.
Symantec also sports a very powerful visual debugging tool. Café
is the only Java IDE currently available that has a special parser
that will parse your files and create a GUI-based debugging and
viewing window. With this window, you can view your classes and
debug your code with your mouse.
Symantec offers a tool called Visual Debugger, which is a GUI-based debugging environment that contains parsed class files from your project. Not only can you point and click your way to debugging code, you also have the ability to control and debug each and every thread in your Java program individually because the Visual Debugger was designed for Java's multithreadedness.
In the visual design environment, Symantec Café has a Visual-Basic-like
design environment with a drag-and-drop toolbox to design front
ends in Java. Symantec Café writes the actual code for
everything on the back end.
Try using both mouse buttons on anything and everything in Symantec Café to gain access to tools available to help you.
Installing Symantec Café
Installing Symantec Café is very easy because it comes in a CD and contains the standard install wizard to help you through every step of the process. During the installation process, you can choose to install various groups of tools on your hard disk. If you choose everything, Symantec Café should require about 25 to 60MB, depending on the cluster size of your hard disk.
As mentioned at the beginning of the chapter, Symantec Café
currently is available only for the 32-bit Windows environment.
However, Symantec also is working on another version of Café
for the Macintosh environment.
Symantec is working on Caffeine, a Macintosh version of its Café.
Café Desktop
The Symantec Café gives you a highly visible work environment and enables you to create customized views of your workspace that will be saved when you exit the program and automatically reloaded when you return. The Symantec Café also enables you to create customized views for your workspace that you can reference by name. You can customize different layouts with the tabbed workspaces and create your own tabs and add them to the workspace tab. You have the ability to redesign completely your view of Symantec Café.
Café Views Palette
You could probably consider the views palette to be the control center for the Symantec Café. It is located to the right of the Workspace tabs. You can activate the array of buttons by double- clicking them or use them as a drag-and-drop icon bar to edit and debug your Java programs. For example, drag the source icon from the views palette around the center of the screen, let go, and you will see a new source file created exactly where you dropped the icon with your mouse (see Figure 6.5).
Figure 6.5 : The views toolbar.
If you cannot find the calendar.prj file or the ..\samples directory, you probably did not direct the Symantec Café to install the demos during the installation process.
The Symantec Café comes with 41 sample projects and about
85 total examples. As a demonstration of Café, you will
work with one demo called CALENDAR.PRJ. Open CALENDAR.PRJ
by opening the Project command on Café's main menu bar.
From there, go to ..\java\café\samples\java\calendar,
which should display the project file calendar.prj.
Like the Java Workshop, Symantec Café organizes its Java programs into projects controlled by files with the .prj extension (for example, calendar.prj). Unlike the Java Workshop, Symantec Café does not support the use of portfolios.
Symantec Café Express Agents
Symantec Café comes with two express agents. Express agents are wizard-like tools used specifically in Café. With the first express agent, called the Project Express, you can quickly create a new project using the point-and-click format. This way you can navigate your way through several screens with the ability to select source files and create new source files to begin your project.
The other express agent is the AppExpress agent, which helps you generate a new Java applet, program, or console. It will even get you started by generating some basic code based on your input.
You can access the Project Express by clicking the Project menu on Café's main menu bar and clicking New to invoke automatically the Project Express. The AppExpress can be found in the menu bar tools with the AppExpress button.
Café Studio
Possibly the most powerful tool in the Symantec Café is
the Café Studio. With this very powerful visual resource
editor, you can interactively create and edit menus and visual
components using simple drag-and-drop techniques.
For more information including a formal discussion on Java User Interface controls, see Chapter 8
With the Visual Resource Editor in the Café Studio, you can design your front end visually. The Café Studio provides methods to handle events in the front end while automatically generating the necessary source code to be placed in your project.
You can access the Café Studio by clicking Resource and New on Café's main menu bar. Symantec Café actually creates a resource file, which will be discussed later, with our sample Java program calendar.prj, which you opened earlier. In the Project View, double-click the file calendar.rc in the list and a dialog box will open, asking you if you want to open the Café Studio. Click Yes and when the Café studio loads, highlight the item Form on the right side of the new window. An item Calendar "init" on the list box below the one in which you currently are working should be displayed. Right-click that item and choose the option Edit resource. Figure 6.6 shows what you should see on the screen.
Figure 6.6 : Caf Studio with the sample calendar.rc
Looking at the main window in Figure 6.6, you see that you can design the form completely from the ground up. Also, looking at the properties tab window for this form, you can manipulate the general preferences for the form as well as the font types, sizes, and attributes for the objects used in this form. You can work with the layout as well as write code to handle events.
Resource Files in Symantec Café
When you save a form design using the Café Studio, it generates
a proprietary resource file with the extension .rc (for
example, calendar.rc). This file maintains all of the
components, layout, and other pertinent information that the Café
Studio used, but it is used only in Symantec Café as an
intermediary to generate the Java source code for the actual designs
in the Café Studio for the source files. In the end, your
program will be entirely Java-based code.
Also note that one reason that the Café Studio does not directly save information about the form designs in a Java source file is because (as you will learn in Chapter 8 in Java, you do not typically have the capability to specify exactly where all the Java controls and components are to be placed. Instead, Java uses a layout manager that follows a given format in which each object is placed relatively to each other. This is very useful in Java because the Java program can be ported to so many environments. However, this portability is not needed or wanted in the design stage of the form, which is why Symantec Café utilizes this resource file to enable you to specify more exact information of where you want to place objects.
Programmer's Editor
From just about anywhere, you can parse the Java source files
and read all of the source methods imported by the project. Within
the project settings, you can specify the target program type
and any compile and debugging options. From the file in the project
list, you can double- click a file to the open source editor with
that file, and you can right-click a file to compile just the
selected file.
Symantec Café gives you the option of using either its native compiler, which is much faster, or the compiler bundled with the JDK.
Now look at some code in the calendar project file. Go to the Project View and double-click the file calendar.java. A window similar to that shown in Figure 6.7 should come up.
Figure 6.7 : Programmer's Editor example using the calendar.java file.
You can see that Symantec Café uses special colors to highlight various parts of the code. For example, all of the code in dark red signifies a comment and all of the code in blue is reserved for Java keywords. Café goes beyond just displaying various colors, however; Café also has linked visual tools to this code.
Symantec Café Parser
With the Symantec Café, you can have an object-oriented view of your code, especially through the use of its parsing technology and its visual class editors. Café utilizes a parser that is unrelated to the compiler. It runs on a separate thread in the background and automatically parses the changes that you make to your Java source code. This parsed code then is used by two tools in Café: the Class Editor and the Hierarchy Editor.
Class Editor
The Class Editor is a three-pane class browser that gives you a visual list of all of the classes in your program and a list of all the method and data members contained within each class. This tool is designed to focus on the abstract parts of your code, which means that it looks at your class methods and variables without displaying the actual implementation code in your Java program. As you burrow down into your classes, however, you can get to the source code to make changes in your code.
Once again, go to the Views palette and double-click the Class Editor icon. You will see three panes of information. The pane of the top left represents all of the classes in the sample project calendar. The top right pane shows all of the methods and variables for the selected class. The bottom pane is where the specified method's source code is displayed. You can open the source code for a given method in two ways: by right-clicking the method or variable then clicking the command Go to source or highlighting the method and double-clicking it. Open the default package as in the example in Figure 6.7 and double-click the method Action. The source code will open in the third pane and should look something like Figure 6.8.
Figure 6.8 : Class Editor example with the calendar.prj.
Referencing Figure 6.8, the diamond colors next to each element indicate its access relationship. Green means public, yellow means protected, and red indicates that the access privilege to this element is private.
The Hierarchy Editor
The Hierarchy Editor is similar to the Class Editor except that the Hierarchy Editor is an architectural way to view your Java programs and any other classes that belong to the program. You can directly manipulate your program's inherit structure by dragging and dropping. Also, the Hierarchy Editor enables you to double-click a particular class to activate the Class Editor with that particular object opened.
Looking at the example with the project calendar, double-click the Views Palette icon that shows the Hierarchy Editor.
Figure 6.9 : The Hierarchy Editor in the calendar.prj.
The following sections briefly discuss several tools related to the Programmer's editor in Café that help in the design and debugging process.
The Thread View
The Thread View is a very powerful feature that Symantec included in light of Java's multithreadedness. With the Thread View program, you can suspend and activate threads in a Java program.
The Call Chain
The Call Chain displays all code modules and methods executed by an individual thread and displays the current execution point as well as the return points for each called method. With the Call Chain, you can follow the execution rhythm of your program.
The Watch View
The Watch View inspects the data in variables and objects. With Watch View, you can examine the values of class members and variables. Simply drag a module from the Call Chain into the watch windows and all variables accessible to that module are displayed in the window.
During the installation process, you will see that Symantec Café comes with a tutorial that demonstrates the very basics of Java as well as how to use the tools that come with the Symantec Café.
Symantec Café and the Appletviewer
Symantec Café, unlike Java Workshop, does not come with a built-in HTML viewer and does not have the Java Workshop's Web-centric focus. Instead, it is more geared toward the Symantec C++ design style for Java. The Symantec Café does come with the JDK's appletviewer built into it. It is invoked automatically when you click the command Execute Program in the Project menu bar. Let's compile the calendar project. Go to the Project menu and click the Build All button. Notice that the bottom window called Output will appear on the screen. The Output window displays the output of a text-mode program being compiled, parsed, or debugged. If errors are encountered during parsing, messages are displayed in the Output window. You can double-click the error message to open the source file and point to the trouble spot. At this point, build the calendar project (see Figure 6.10) and you should receive no errors.
Figure 6.10 : The Output window for compiling calendar.prj.
Finally, click the Project menu again and then click Execute Program to minimize Symantec Café and invoke the appletviewer with the Calendar applet loaded. When you exit the appletviewer, it will automatically restore the Symantec Café development environment (see Figure 6.11).
Figure 6.11 : Appletviewer of calendar.prj.
Symantec Café Closing Comments
The Symantec Café is a powerful integrated development environment, no doubt aimed at serious Java development and large-scale projects. It should receive an award for bringing Java to the next level of development because it can write code for you, pinpoint Java errors with its point-and-click debugger (in half the time as the command-line debugger in the JDK), and manage large-scale development projects with its project manager. Finally, its blazingly fast compiler makes the Symantec Café definitely worth a second look.
The Borland Internet Products
Borland currently is developing several Java-related products.
The first product that has been released is Borland C++ 5.0. The
other project will be a unique step in a new direction for the
integrated development environment. This new environment, called
Borland Latte, will be Borland's Delphi look-alike for Java.
Delphi is a rapid program development (RAD) environment developed by Borland. Its syntax is designed for writing programs with fewer bugs, easy to understand code, and less time spent in development. What is the price for this euphoric development language? Efficiency. In general, a RAD environment will generate less-efficient programs because it is a higher-level language. However, this efficiency versus understanding statement is valid only in environments that were designed to provide companies with quick solutions to the modern client/server topology. Because Java is such a new programming language, it will be interesting to see whether Borland Latte will follow that same paradigm or be able to develop efficient Java code.
Borland Latte
Latte will focus more on the RAD environment than all other integrated development environments discussed in this chapter. Borland Latte probably will be available by the time you read this. At this point, one feature intended for the Borland Latte is a graphical debugger. Also, as with all the other integrated development environments, Latte will have a just-in-time (JIT) compiler. Other tools, such as a form builder to point and click your way through the front-end design stage (as in Café Studio), also are planned.
Borland C++ 5.0
Borland has released several other products that also deal with Internet (more precisely, Java) development. Borland has bundled these new tools with its new version of Borland C++ (5.0). One major quality behind Borland C++ 5.0 is that it goes beyond an integrated Java development environment and seamlessly integrates developing in C++ and Java so that one project can contain both types of code. Because Java and C++ are closely related languages, it is logical to design one comprehensive set of Java-based tools.
Two editions of Borland C++ 5.0 currently are available: the Borland C++ Development Suite and Borland C++ 5.0. The primary difference between the two editions (as related to Java) is that the AppExcelerator (Borland JIT compiler) is bundled only with the Development Suite edition. In the next few sections, you learn some of the other Java-related features that come with both editions of Borland C++ 5.0.
AppExpert for Java
The AppExpert for Java tool is designed to start a new Java program quickly. Just about everything in this wizard-based tool can be done with a few mouse clicks to create a custom program that will start you running. In essence, AppExpert for Java could be considered a Java code generator.
The Targetexpert Tool
The targetexpert tool lets you create Java projects with the click of a button. Because Borland has seamlessly integrated the two programming languages into one environment, this wizard-based tool will ensure that your environment is properly configured to create Java programs as well as C++.
The Borland Debugger
The key tool that Borland has designed for Java developers is the graphical debugger. This debugger is available in both editions of Borland C++ 5.0. A pre-release of the Borland Debugger, which can be downloaded and installed on top of the JDK, is also available. If you are interested in looking at the free pre-release Borland Debugger, go to the following site for more information:
The Borland Debugger for Java is currently the only graphical Java debugger developed in Java. Therefore, it is the only graphical debugger available outside of the Windows environment.
Installing the Beta Borland Debugger
After you have downloaded the Borland Debugger, make sure that you have installed the JDK. Run the self-extracting executable in the ..\java directory in the JDK. The debugger might ask you if you want to overwrite some files; overwrite everything.
Preview of the Borland Debugger
In the Borland Debugger, you will work in one of several panes. The first pane on the left, the Call Stack pane (see (1) in Figure 6.12), shows function calls made to this point. It is interactive in that you can view details on various items by clicking them.
Figure 6.12 : The Borland Debugger with numbered panes.
The second pane on the right (2) is the Source pane. This pane shows the code of that class. Use your mouse to click break points in various lines of code.
The third pane (3) is the Variable (also known as the Context) pane, which shows you all of the arguments and local variables for this function. The Context pane is in a file-manager-type design where you can expand and collapse objects and subobjects to toggle between to view the information.
The fourth pane (4), in the lower-left corner, is the Watch Point pane. Use this pane to track a variable for its entire life by dragging and dropping it into the Watch Point pane.
The fifth pane (5) is the Console pane, which gives you high-level
information about what is happening during the debugging process.
The Borland Debugger has a feature called Hot Break that lets you specify break points while the program is running. Hot Break gives the programmer maximum flexibility.
The Borland Internet Products Closing Comments
Borland is definitely developing quite a few great products. At this point, the Borland Debugger is the only available Visual Debugger for Java that was written exclusively in Java, and Borland also has the only seamlessly integrated development environment for Java programming language with C++. Latte probably will be the biggest ground-breaking event in the Java-integrated development environment community coming from Borland. Latte will provide a Delphi-like development environment geared toward Java.
The last integrated development environment about which you'll learn is the Java Workshop. It, too, is completely unique with its Web-centric development environment.
The Java Workshop
The Java Workshop is Sun's addition to the Java visual development arena. It is uniquely designed as a development environment because it focuses on an Internet browser format. The Java Workshop enables you to create new applets and programs as well as author HTML pages. Hence, the Java Workshop gives you the capability to create Java-powered HTML pages all in one place. The Java Workshop also enables you to test the applets and programs in HTML pages that can be loaded in the program. One interesting feature coming to the Java Workshop is the capability to design custom HTML pages. At this point, however, that function is not supported. By the time you read this, though, the Java Workshop definitely should be officially released. At the time of this writing, the Java Workshop is in its advanced beta stage. The Java Workshop is geared specifically toward Internet/intranet development solutions. And yes, the Java Workshop was written in Java, so the Java Workshop should be available for any Java-supported environment.
Because the Java Workshop is a Web-centric development tool with
added features, such as Web page authoring and applet publishing,
which will be packaged with the released version, you will be
able to focus the Java Workshop in an Internet/intranet solution
during the development and testing process. Installing the Java
Workshop should be fairly painless because it uses the InstallShield
to guide you through the entire process.
The InstallShield is also used with Symantec Café.
Note that the Java Workshop is a completely self-contained development
environment, which means that you do not need to install the Java
Workshop on top of the JDK. In fact, if you look closely you will
see that the Java Workshop is actually more of a wrapper or shell
around the original JDK, about which you learned earlier. If you
look at the directory structure for the Java Workshop, you will
see the subdirectory ..\JDK, and in there you will see
the executables (for example, javac.exe) that you learned
in the JDK.
Because the Java Workshop does not use the JDK, it is recommended that you remove the JDK if you have it on your system before you install the Java Workshop.
Introduction to the Java Workshop
The first object to note in Figure 6.13 is the lighthouse on the right side of the window. Whenever the Java Workshop is busy (including loading HTML pages and compiling Java programs), the lighthouse will be animated just like a browser. Also, look at the icons in the panel at the bottom of the screen. Those icons represent the browser-based commands for the Java Workshop. The icons from left to right are Back, Forward, Home, Reload, and Stop. The text field at the top of the window enables you to specify a hypertext address to load an HTML page in the Java Workshop. In this sense, it is exactly like an Internet browser. However, you can tell that it is also a professional development environment by looking at the toolbar at the top of the page. In this toolbar, you can see that in this release no title represents what each of those icons means. If you glide your mouse over the icon and look at the bottom of the window however, you will see a brief explanation of what the icon represents.
Figure 6.13 : The Java Workshop advanced beta release main page.
The Portfolio Manager
The first icon on the top left of the screen is a picture of a suitcase that represents the Portfolio Manager. The Java Workshop sorts its Java programs and projects into portfolios. A portfolio is a text file that has a .psf extension. In this text file is a list of references to a specific set of projects. Each project file has the extension .prj and contains high-level information about each project, including a list of source code files and preference information. This file is also in a text-based format. The actual source code files for each project are at the bottom of the pyramid. For a visual organizational chart of the Java Workshop, see Figure 6.14.
Figure 6.14 : Organizational chart for Java portfolios and projects.
The Java Workshop is currently the only Java-integrated development environment of all the environments you learned in this chapter that supports the use of portfolios.
Click the briefcase to open the Project Manager. Three new icons appear under the text field. From left to right are Create a New Project, Import an Existing Project, and Remove the Selected Project. In the Java Workshop, whenever you open up a manager (for example, the Portfolio Manager), a set of implementation-based icons related specifically to that manager will be displayed on a subpanel at the top. As an example of how to use the Java Workshop, you will create, test, and run a very simple Java applet. Create a new project called ButtonA by clicking the Create a New Project icon. A tab window will open, giving you several choices to create a new project. In this example, save the project in a special directory called c:\button and create a new applet called ButtonA. In this example, put it on the local drive c:\. When you are finished, it should look something like Figure 6.15. Then click Apply.
Figure 6.15 : Creating a project in the Java Workshop.
You now should have a ButtonA project icon somewhere on the screen. To begin working on the project, simply click its icon. Then click the puzzle icon next to the suitcase on the main panel at the top of the screen to open the Project Manager.
The Edit Project
Moving forward with this example, the next major icon on the top of the screen that you can double-click to open is the Edit Project (also called the Project Manager). In the Project Manager, because you are not really implementing anything, there are no secondary icons to discuss. It is through the Project Manager (see Figure 6.16) that you will be able to set various preferences for each project. In fact, think of the Project Manager as a project preference manager.
Figure 6.16 : The Project Manager.
For the ButtonA project, set the preference for this project to be an applet and place it in the directory called c:\button.
The Source Editor
The next icon, which shows a pencil writing on a notebook, is
the Source Editor. Click this icon to open another window to work
with your code.
You can start a manager more than one way. More precisely, as you will see later in this demonstration, you can activate the Source Editor from the Build Manager and the Debug Manager as well as from the pencil and paper icon bar at the top of the main window.
The next step is to actually write the code for ButtonA (enter the code in Listing 6.1). Figure 6.17 shows the Source Editor with the code for ButtonA filled out.
Figure 6.17 : Java Workshop Source Editor containing the code for ButtonA.
Listing 6.1. The ButtonA.java code.
// Button 1.java import java.awt.Button; import java.awt.Label; import java.awt.Event; public class ButtonA extends java.applet.Applet { Button b; public void init() { b = new Button("WELCOME"); add(b); show() } public boolean action(Event e, Object obj) { if (((Button)e.target).getLabel() == "WELCOME") { b.setLabel("GOOD-BYE"); } else if (((Button)e.target).getLabel() == "GOOD-BYE") { b.setLabel("WELCOME"); } return true; } }
If you look carefully at the code in Listing 6.1, you might have noticed that no semicolon terminates the show() method. It is with this deliberate error that you will see how the Java Workshop responds to this pseudo-real-life situation. This takes you to the next manager.
The Build Manager
The next major icon, designated by a wrench, is the Build Manager.
The buttons at the top of the toolbar are arranged from left to right so that as you develop, you use the icons from left to right.
When you open the Build Manager, you will see a new set of toolbar icons displayed in the subpanel on the main window. These icons from left to right are Go to the Previous Error, Go to the Next Error, Initiate a Build, Stop, and Build All Even if They Are Up To Date. For your example, specify the file ButtonA.java. Click the icon Build All Even if They Are Up To Date to recompile the file completely. Figure 6.18 shows the Build Manager compiling the ButtonA example.
Figure 6.18 : The Build Manager.
As you click the Build All Even if They Are Up To Date icon, you can see the integration of the original JDK in the Java Workshop compilation process because a DOS window opens to run the executable javac.exe.
The first line of text on the page actually shows the command line for the compilation of the project:
C:\JAVA\WORKSHOP\JDK\bin\javac -g -d C:\Button -classpath C:\JAVA\WORKSHOP\JDE\classes; C:\JAVA\WORKSHOP\JDK\classes;C:\Button C:\Button\ButtonA.java
The lines after that show the deliberate error in the typical javac.exe format, except that a hypertext link is here to edit the file (via the Source Editor) where the error is contained. Click that link to open the Source Editor. If you look at Figure 6.19, you will see that two new icons have appeared. These icons move between error messages. Also notice that the line of code that is offensive to the compiler is highlighted in yellow so that you can immediately see the trouble spots in your code. This is also a nice tool.
Figure 6.19 : Reviewing the applet in the Source Editor from the Build Manager.
Now go ahead and put in the semicolon to terminate the end of that line, save, and close the window. You should be back in the Build Manager. Click Initiate a Build to build only the changes that were made to the original code. At this point you should see Build Successful printed at the bottom the subtoolbar. Your next step in using the Java Workshop in this demonstration is to take a quick look at the Source Browser.
Source Browser
In JDK language, the Source Browser translates to the graphical version for the javadoc.exe tool that was discussed in the JDK. If you remember, javadoc.exe is not very easy to use. The Source Browser has definitely improved on it, however. Here you will be able to see the big picture of the code structure because it shows all the imported as well as inherited classes and the methods used in this class. If you click specific objects, the Source Editor will open and highlight the declaration of the method on which you clicked. The Source Editor also uses a second tab to search the file to get information. This is one of the Java Workshop's strongest points because it is done automatically, giving you the programmer and anyone else who might work on your project a topographical view of what is going on. Figure 6.20 shows how the class ButtonA looks in the Source Browser Tutorial.
Figure 6.20 : ButtonA in the Source Browser.
The Debugger
Debugging can be a long and tedious process. Our applet is so basic that there really is not much to debug, but you will learn some features that the Java Workshop uses. You can manipulate threads, evaluate expressions, and specify break points in your code. The Debugger provides several windows in which you can view messages as well as other objects. Debugging is an integral part of the development process, and the Java Workshop seems to have just about everything that you need for a basic visual debugging environment.
Applet Tester
The next icon, Run Applet or Stand-Alone Program, is a way of testing your applet. Your applet is quite basic; all it will display is a button labeled Welcome that will change to Good-Bye if you click it. But in the process, you have had a chance to work with the Java Workshop. If you did everything correctly, your screen should be similar to Figure 6.21.
Figure 6.21 : ButtonA in the Applet Tester.
Online Help
The final icon (with the question mark) is the Help button for
online help. Note that the first advanced beta version evaluated
did not have a completed help file. On the surface it looked fairly
good, with a table of contents as well as a help topic for every
section that we covered.
In any integrated development environment, note that a good help file is very important. A good help file should have complete documentation on the built-in classes, coverage of all the major errors when compiling code, a tutorial focused on introducing the user to Java as well as the integrated development environment, and information on how to use the product.
An option that was not included in this pre-release of the Java Workshop is a just-in-time (JIT) compiler. With this relatively new technology, also known as dynamic translation, you can compile very fast executables. It is an important feature that will be a very hot (no pun intended) topic for Java.
Java Workshop Closing Comments
The Java Workshop is one of the most unique development environments in which to work, especially with its Web-centric design that seems to play a major role in the environment. It is also very logically lined out-its icon bar logically reads from left to right, following each step you need to understand the environment. The premise of the Java Workshop is that it is designed to be easy to use and to help focus Java as a development solution for the Internet. This is probably going to be a good integrated development language for users new to Java who want to design Java-powered HTML pages.
In this chapter, you learned several new products, most of which are already being redesigned in their next version. There are many improvements and new tools coming out for Java almost every month. By the time you read this, Microsoft should have released its Java environment Visual J++ and Symantec should have released Visual Café (a RAD environment for Java).
At this point, the integrated development environments you have
learned have their own strengths and weaknesses. The end result
is that these tools all will have a place in this new industry.
For example, the JDK is definitely the most cost-effective way
to develop Java programs. Although the Java Workshop will no doubt
focus Java solutions toward the Internet/intranet needs, the advanced
Java users will definitely benefit from Symantec Café's
power tools. Users who want a more RAD-based ease of use with
Java will focus on Borland Latte. For hard-core C/C++ programmers,
Borland C++ 5.0 will definitely offer its users better coding
integration between Java and C/C++ in one environment. While Java
itself is a very new language, Java Integrated Development Environments
are in their infancy. Tables 6.1, 6.2, and 6.3 give you a quick
reference to compare all of the products learned in this chapter.
|Hard Disk
|Win95/NT, Solaris, MAC
|Win95/NT, Solaris
|Borland 5.0
|Win95/NT, Solaris
|NA = Not Available
|UN = Unknown
(*)Borland C++ 5.0 has two editions: the regular edition and the development suite. The development suite is listed at $499.95. You can also purchase the upgrade for the development suite for $349.95. The regular edition of Borland C++ 5.0 is $349.95 and $249.95 for the upgrade.
(**)The Borland Debugger also has two editions; the size depends
on how much you choose to install on your local system and how
much you want to remain retrievable from the CD.
|Borland 5.0
|Borland 5.0
|UN = Unknown
Hopefully, this chapter has given you a better understanding of all the available features and where the Java Integrated Development Environments are headed. The next chapter is an introduction to pure Java. It covers all of the structured parts of Java and discusses the object technologies available to the Java language.


text:
Great way to stock the pantry and save money doing so!
Features Include:
- No MSG
- Certified Cajun
- Naturally Gluten Free (Seafood Boil, Fish Fry)
- Contain no GMOs
- Lower Sodium than competition
Get 3 of our A CAJUN LIFE® Mixes designed to go on or with Seafood for 1 great price!
Bundle Contains:
Fish Fry
Seafood Boil
Hush Puppy Mix

subset: commoncrawl


text:
I have decided to paint on wood instead of card. My pieces are still the same size 148.4mm X 105mm. Everything is done by me including cutting and assembling the framework behind the painting.
Painting on an inflexible surface is more challenging but I am able to create more depth into the painting. I am still using my trusty iron, but now also a heated pallet to melt the encaustic medium and mix in the pigments. With also painting the wax on with a brush, I use a heat gun to fuse each individual layer to previous layers.


text:
Are you eager to have more than a sip of a cold drink that is not only refreshing but also promises a nutritious treat? Soy whey protein shakes will cater to the need. The healthy beverage is actually a great supplement if you are maintaining a diet that will not only shed off those flabs but also develop the muscles. Today, the product is not difficult to spot in local groceries all over the globe as there is an abundant supply raring to be held by your hands.
There are plenty of soy whey protein shakes that can be bought in forms of liquid or powder. For liquid, the item means that it is all set for a rich gulp while those in powder suggests that you have to blend it with other elements before consumption. The self- preparation manner is more interesting to do because there is room for you to experiment. You can mix in other ingredients that will make the healthy beverage more tasteful than ever.
Doctors recommend that an individual should partake a minimum of two to three soy whey protein shakes in a daily basis. The quantity is an assurance that the cold drink sated with building blocks is immediately taken after an extensive physical training to heal the decreasing resources. If the natural nutrient supply is in solid kind, a commoner who is not fond of doing tough activities that is not a reason for sweating profusely should digest at least twenty grams.
Soy whey protein shakes are excellent substitutes than eating egg whites. The healthy beverage is very much ideal anytime of the day and will even appeal to any demographic, be it the young ones or the young once due to the wide variety of flavors such as chocolate, strawberry, lemon, plum and vanilla, to enumerate a few. For those people who are already serious in their quest of achieving a desirable physique namely athletes and bodybuilders, products that are composed of the building blocks are regarded to be their best companions compatible for the digestive system.
Since soy whey protein shakes are lactose free, it follows that there are lesser calories spotted in the commercial merchandise. There is no risk of being diabetic since there is low amount of sugar as well as with carbohydrates. If you want to put off some pounds, then settle for these cold drinks that will also help boost the functions of the organs in the body.


text:
Yardley Products is a U.S. manufacturer of high quality threaded metal insert fasteners serving a wide range of fastening applications for OEMs and various other industries. Since 1946, Yardley Products has been delivering standard and custom manufactured threaded metal inserts for applications ranging from furniture and plastics to medical and electronics.
Click to view Catalog
Click on thumbnail to view our Line Card
Having trouble viewing PDF's?
Click HERE to install Adobe Reader
Terms & Conditions
Copyright © 2017 The Olander Company, Inc. All Rights Reserved.


text:
Programmer friends: Many of us have deeply-ingrained habits of making fun of whichever languages, tools, OSes, etc we don't personally use. Please don't. I highly recommend reading Aurynn Shaw's essay on "Contempt Culture", which I have to revisit myself periodically: https://blog.aurynn.com/2015/12/16-contempt-culture
@jorty I wouldn't say I disagree with you on anything you said here, but I feel like it's kiiind of missing the point?
Contempt culture finds excuses to hate a thing. Doesn't matter whether the language ignores 50 years of PL theory or has the latest dependent type system, somebody's going to hate it. People fail to acknowledge that there are reasons why people use particular tools, and those reasons might not be ones I care about, but that doesn't make them less important. Empathy matters.
@jorty yes! 😁
A Mastodon instance for cats, the people who love them, and kindness in general. We strive to be a radically inclusive safe space. By creating an account, you agree to follow our CoC below.


text:
Being cooped inside while the summer sun is calling your name can make it difficult to focus on work. Do not let the summer heat beat you while you are at your desk. Bring summer in to your office with these simple and fun ideas!
Infographic brought to you by Wrike free project tracking tools


text:
Volunteering is an American tradition, that over the years, has made an immeasurable contribution to communities, organizations, and individuals throughout the country. Volunteers are vital to the success of the National Park Service (NPS). The Volunteers-In-Parks (VIP) program can accept and use voluntary help and services from the public, in ways that are mutually beneficial to the NPS and the volunteer. Each year more than 120,000 volunteers donate over 4 million hours of service in their national parks. They come from every state and many different countries to help preserve and protect America's natural and cultural heritage for the enjoyment of this and future generations.
Becoming a steward at Monocacy National Battlefield can be a rewarding experience. It provides an opportunity to share your knowledge, expertise, and passions through public service with thousands of visitors each year. There are three volunteer categories at Monocacy National Battlefield; they include:
Long Term Volunteers
Long Term Volunteers contribute four or more hours on a regular basis (weekly, bi-weekly, or monthly) throughout the year and for multiple years
Group Volunteers
Organizations or groups interested in stewardship, organize a day in which they will contribute time towards a specific project


text:
Monday, July 27, 2009
Daring Bakers' Milan Cookies
This particular challenge reminded me of baking macaron. Well, the piped batter looked like macaron but the flattening effect and final result resembled baking lady finger.
Despite the early thought of baking just Mallows recipe, I ended baking both and felt totally pleased making the decision to bake this very special Milan cookies. The recipe is easy to follow and the process is straight forward. Don't know whether anyone of you ever baked Hokkaido Snow White Cookies which are 2 very thin pieces of butter cookies sandwiched with a layer of white chocolate. The outcome is pretty close even though the latter is done by rolling and cutting dough instead of piping.
The blend of vanilla and lemon extract brought the best out of this cookies. Having said that I think you shouldn't miss trying out this recipe if you ever think about baking for an afternoon tea. Thanks to Nicole from Sweet Tooth for selecting this simple yet fabulous recipe!
The July Daring Bakers' challenge was hosted by Nicole at Sweet Tooth. She chose chocolate Covered Marshmallow Cookies and Milan Cookies from pastry chef Gale Gand of the Food Network.
This recipe is courtesy of Gale Gand. Have made some adjustments for my own convenience. The original recipe can be found here.
Makes 47 pieces
1. Cookies
- Salted butter – soften in room temperature > 85 grams
- Icing sugar > 130 grams
- Egg whites > 3
- Vanilla essence > 1 tablespoon
- Lemon essence > 1 tablespoon
- All purpose flour > 94 grams
- Preheat oven to 180C.
- Cream butter and icing sugar until pale.
- Add egg white gradually and then mix in vanilla and lemon essence.
- Fold in flour and mix well.
- With a small (1/4 inch) plain tip, pipe 1 inch sections of batter onto parchment-lined tray, spacing them 1.5 inches apart as they spread.
- Bake at 180C for 8 minutes or until light golden brown around the edges. Let cool on tray.
2. Chocolate Filling
- Semi sweet chocolate – chop > 120 grams
- Whipping cream > 54 grams
- Orange zest > ½ orange
- Prepare chocolate in a bowl.
- In a small saucepan scald cream over medium fire.
- Pour hot cream into chocolate bowl. Whisk to melt chocolate. Add zest and mix well.
- Set aside to cool. The mixture will be thick.
3. Assembly
- Spread a thin amount of chocolate filling onto the flat side of a cookie.
- Press the flat side of the second cookie on top of filling.
22 comments:
Wow..if there was actual perfection in this world, you nailed it with these cookies! Perfectly executed and beautiful! Once again, you rocked another challenge. Love the photos too! :)ReplyDelete
Great job on your challenge and your Milans look delicious. Beautifully presented and great photos.ReplyDelete
- AnonymousJuly 27, 2009 at 7:23 AM
These photos are just gorgeous!! You make me want to bake in Paris :D Thanks for sharing!ReplyDelete
What pretty cookies! they look so delicate and delicious! I love your shots!ReplyDelete
Such pretty photos!ReplyDelete
I tried to make mine round too, but you definitely did a better job at it ;)
Beautiful pictures!! I thought the Milans were delicious too and found the piping very similiar to piping macarons. Great job! :)ReplyDelete
- AnonymousJuly 27, 2009 at 4:31 PM
Your Milans are absolutely perfect! They look so delicate yet inviting :DReplyDelete
Stunning photos!!!
Your cookies are very delicate, beautiful and extremely tempting!ReplyDelete
Beautiful pictures!
Beautiful photographs of beautiful cookies! I'm sure they taste as good as they look!ReplyDelete
Thanks, guys for your great complements! I have been enjoying DB challenge so much so far... Hope to put in more efforts in the future :-)ReplyDelete
Oh wow... how beautiful even you got them. The pics are gorgeous - love the look of the colours!ReplyDelete
I only made the mallows, with a lot of headaches, so I was in no shape or form to even try the Milanos.
Your milanos make me smile the just make me think of a lovely summer day. Fantastic jobReplyDelete
Thank KayB! Ha ha mallows are complicated. My personal view, if I have little time to start with the Milanos are my choice since it is easy to bake and the combination of lemon and vanilla extracts really made these cookies taste very special! Leave alone all the cleaning hassles from the coating chocolate drips all over the place :-)ReplyDelete
Thanks Ruth! Maybe the color of the floweres I picked to complement the cookies? Don't we all love summer when everything is fresh and full of spirit....ReplyDelete
Kris, your cookies are perfect. So beautiful!ReplyDelete
Beautiful beautiful work and the pixs are so lovely and those yellow are summer. The cookies are perfect in colour and shape and all the same size an excellent result you are one great baker and great to hear you liked them so much. Cheers from Audax.ReplyDelete
Wow!! All of your cookies for this challenge look amazingly yummy =D. Gorgeous photos as well!!ReplyDelete
- AnonymousJuly 29, 2009 at 4:50 PM
Wow!!! I used a cookie cutter halfway through baking to get the nice round shape and yours turned out perfectly with just the piping. Stunning, really really stunning.ReplyDelete
love them ^^!!!! XOXOReplyDelete
Thanks, Audax! You are truly an inspiration!!ReplyDelete
Thanks Anh, Lauren, Gine and Bakergirlcreations! So glad you liked my post!ReplyDelete
what a beautiful picture !!! Kris, do you know what you like to do next in your life ? Seem, you have a talent as a baker and food stylist. That's the perfect combination :DReplyDelete


text:
On the Optimal Spatial Resolution of Crustal Mass Distributions for Forward Gravity Field Modelling
Access Status
MetadataShow full item record
The primary drawback of forward gravity field modelling is that the Earth's density distribution must be known. Nowadays, increasingly more information on the Earth?s mass distribution is available, such as high-resolution digital elevation models, models of the crustal mass distribution as well as of deeper masses. This paper studies the spatial resolution of crustal mass distributions required in forward gravity field modelling using spherical harmonic expansion of global data and power spectral density functions of local data. The spectral sensitivity of different gravity field parameter is examined by means of degree variances and analytical degree variances. Numerical results for the geoid height and gravity disturbance are given globally and in a test area over part of Australia.
Source Title
Related items
Showing items related by title, author, creator and subject.
A new degree-2190 (10 km resolution) gravity field model for Antarctica developed from GRACE, GOCE and Bedmap2 dataHirt, Christian; Rexer, M.; Scheinert, M.; Pail, R.; Claessens, Sten; Holmes, S. (2015)The current high-degree global geopotential models EGM2008 and EIGEN-6C4 resolve gravity field structures to ~10 km spatial scales over most parts of the of Earth's surface. However, a notable exception is continental ...
Kuhn, Michael; Featherstone, Will (2005)A synthetic Earth gravity model (SEGM) generates exact gravity field quantities and therefore is well suited to validate methods used in gravity field modelling. This paper describes the construction of a SEGM by forward ...
A Synthetic Earth Gravity Model Designed Specifically for Testing Regional Gravimetric Geoid Determination AlgorithmsBaran, Ireneusz; Kuhn, Michael; Claessens, Sten; Featherstone, Will; Holmes, S.; Vanicek, P. (2006)A synthetic [simulated] Earth gravity model (SEGM) of the geoid, gravity and topography has been constructed over Australia specifically for validating regional gravimetric geoid determination theories, techniques and ...


text:
8 March 2018
Assumption College's Nigel Engel, Marlhes Restaurant Manager, and his VET Hospitality team are keen to ensure the dining experience they provide is one everyone is able to enjoy.
With dates for 2018 recently released, the team are excited about new opportunities to provide a remarkable culinary experience to all its guests.
The Marlhes will host both buffet and a la carte dining experiences in 2018 and the VET Hospitality team are eager to showcase the beautiful fresh produce and great selection of wines that compliment all the dishes on offer.
A buffet dinner will include a selection of antipasti, seafood and salads with a hot carvery of selected meats, roast vegetables and condiments as well as an international dessert buffet and cheese selection.
On a la carte restaurant nights, there will be a three course selection with an Italian influence.
Nigel Engel is excited about his team in 2018 and how the course continues to benefit so many.
"VCE Vet Hospitality programs drawn from a national training package, offer qualifications which are recognised throughout Australia. These qualifications provide students with the knowledge and skills to prepare them for a diverse range of occupations in the hospitality industry including commercial cookery, catering and food and beverage service," Mr Engel said.
"At Assumption College we have a state of the art facility to teach students the techniques and professional attitude required to work within the hospitality industry. Assumption is a member of the Hume Cluster group of schools, so we have not only our own students but we also have students from Broadford Secondary College, Wallan Secondary College, Seymour College and Saint Mary's College who attend each week on a Wednesday.
"VET not only teaches them the required curriculum it also teaches them responsibility, team work, initiative, time management and the skills to work in a fast pace, demanding environment."
Students at Assumption College complete their first year in front of house learning restaurant procedures, in second year they move into back of house learning kitchen operation procedures. After completion of two years' students obtain a Certificate II in hospitality and a Certificate II in Kitchen Operations, giving them a greater chance of obtaining work while at school and when they complete their schooling.
Bookings can be made through the Assumption Web page or through Try booking at www.trybooking.com/book/event?eid=333222&track=


text:
NEW YORK (CBS.MW) - Shares of Oracle ORCL, +0.58% got a 25-cent, or 2 percent lift, to $12.65 in Instinet pre-open trading after UBS upgraded the database software company to "buy" from "neutral," citing a more-favorable environment for application software vendors. In addition, Banc of America upped its fiscal second-quarter earnings and license and total revenue estimates for the company, citing evidence that the business environment has been "significantly better" than six months ago, and closure rates of improved. Rival PeopleSoft PSFT, -8.70% which Oracle is hostilely trying to acquire, was also upgraded by UBS to "buy" from "neutral." The stock was trading up slightly in Instinet on very light volume.
Have breaking news sent to your inbox. Subscribe to MarketWatch's free Bulletin emails. Sign up here.


text:
Diamond couple from Ancaster have travelled on a special 60-year journey together
A couple who have lived all their married life in Ancaster celebrated their diamond wedding anniversary yesterday (Thursday).
Dave and Winnie Blankley met in 1953 at RAF Cranwell where Winnie was working as a nanny and Dave was doing work as a joiner. He did some work at the house where Winnie lived and their relationship blossomed from there.
The couple were married in St Kyneburgha Church in Castor, near Peterborough, where Winnie comes from, and enjoyed a honeymoon in Bournemouth. Dave says he paid £7, more than a week's wages in those days, to pay for a party of 30 to go on a bus from Ancaster to the wedding.
Dave, 85, has lived all his life in Ancaster and enjoyed a long career as a joiner, working in many places around the region.
He said: "I have travelled all over the place and worked on many building sites. I have done a lot of roofing in the village and at Cranwell camp. I really enjoyed it. I love being outside in the fresh air. It was lovely."
Before getting married, Winnie, 82, became a nursing assistant at Rauceby Hospital and later became a home help, caring for the elderly, mainly in Ancaster, for 21 years before retirement.
The only travelling we do these days is to the doctors for our survival pills!
The couple have two sons, Malcolm and Mark, and a daughter, Margaret.
They have five grandchildren, five great-grandchildren, two step-grandchildren and two great-step-grandchildren.
For many years, Dave and Winnie were members of local indoor and outdoor bowls clubs, including Grantham and Sleaford. Dave also played darts. Winnie was a member of Ancaster WI.
The couple have also enjoyed travel over the years and were members of Grantham Twinning Club, visiting Germany every year for over 20 years. Dave said: "The only travelling we do these days is to the doctors for our survival pills!"
The couple celebrated their anniversary on Saturday with family at the Eden House Hotel in Grantham. On Sunday, they will see more family for tea and cakes.
The couple say they like to live life to the full.
Dave said: " We have always gone 50/50 and shared life to the full.
"We have led very active lives and gone on many bus outings and holidays."
Winnie added: "I have enjoyed a long and happy mariage and we have a big family who we like to see."
Register or log in via Facebook, Twitter, LinkedIn, Google+ or your Iliffe Media account to post comments.
Iliffe Media does not moderate comments. Please click here for our house rules.
People who post abusive comments about other users or those featured in articles will be banned.
Thank you. Your comment has been received and will appear on the site shortly.
Terms of Comments
We do not actively moderate, monitor or edit contributions to the reader comments but we may intervene and take such action as we think necessary, please click here for our house rules.
If you have any concerns over the contents on our site, please either register those concerns using the report abuse button, contact us here.


text:
Sunday, November 1, 2009
I spent the whole morning in bed reading a very addictive novel. But at least I finished this poster.
3 comments:
- Sharon Russell said...
good grief luci.. you're fucking amazing.. I love it. We should go to the gig, it's my birthday eve!
- November 1, 2009 at 8:24 PM
- Sharon Russell said...
if the carbohydrates party doesn't go ahead of course.. which it will..
- November 1, 2009 at 8:24 PM
- d e b b i e said...
mmm...i like this!!
- November 11, 2009 at 7:09 PM
Subscribe to: Post Comments (Atom)


text:
Inventory & Data Management
Our Data and Network Inventory Management Services help our clients gain and create one master view of their network spanning all physical and logical resources, make informed decisions and perform accurate engineering analysis. UtilNet helped many service providers consolidate multiple legacy inventory systems, standardize to a consistent inventory model for physical and logical inventory, and convert millions of records to a single inventory management platform with more than 99 percent accuracy across the entire converted network.
Our believe is by improving data quality across network functions, service providers are able to streamline operations by automating time-consuming processes, improve responsiveness to customer requests and reduce costs, including operational costs, by accurately documenting existing capital and avoiding unnecessary purchases and data management costs, by eliminating duplicate data acquisition and reducing the cost of information delivery.
We begin by working closely with our clients to define their business requirements and the desired business process, and we end when the fully integrated system is running on live data. What lies in between, including; analysis, system design, system configuration and customization, data migration, system integration and training is what our diversely skilled technical team expertise covers in full with high proficiency.
Our inventory data management services are supported by a range of proven automation tools, including but not limited to:
- Diagnostic Tools: assess network operations process areas, analyze inventory management and data quality issues, and identify performance improvement opportunities.
- Device Modeling Tools and Techniques: standardize network device model definitions and automate model creation.
- Data Conversion Tools: in-house developed tools to migrate inventory records from multiple source systems to target system using automation and real-time data fallout analysis.
Data Migration Services
UtilNet brings in years of cross-industry best practices to any data migration project. Data migration is a unique and complex process that requires careful analysis and planning to enable the client's realization of business value from an inventory solution.
In order to simplify the data migration process and enable performance tuning, UtilNet envisages the use of an intermediate storage into which the data can be loaded, validated, cleaned or repaired, before it is finally loaded into the database(s) of the live target systems. All unreliable data sources fuse into one reliable, clean and complete source.
In our established, mature data migration methodology we have:
- A systematic, structured approach, providing a roadmap for the data to follow from the original data source to the final destination passing through a staging area.
- We have means to describe and uniformly communicate problems, solutions and,
- We have computerized support that helps in data profiling, analysis, cleansing, conversion, and reconciliation.
Modeling Network Entities
Network documentation is built upon the notion of modelling. How you model a network entity depends on the information display and analysis your business needs and inventory system supports. Moreover, networks of service providers vary in design, technology and in components; every enterprise owns its own private collection of assets from different technologies and multiple vendors.
Realizing this, UtilNet developed a mature modeling discipline allowing for a systematic, structured approach to create computer representations of network assets and providing the means to describe and uniformly communicate standards, conventions, problems, and solutions. Our modeling discipline is supported with computer tools that speeds up the modeling process, ensures consistency, completeness, increases productivity and facilitates quality assurance, data analysis and the like.
Valuing the importance of accurate and correct modeling work to the efficiency of the inventory system, and understanding the large variety and complexity associated with modeling for the inside plant, UtilNet deploys specialized engineers to execute and supervise the modeling work to incorporate the required intelligence in the model and reflect all levels of details required by the network.
Consultancy and Support
We respect that not every organization has a crystal clear vision of their requirement, so with our extensive experience and business understanding, we have the long term vision to help our customers identify where they need to be, then help them get there. At UtilNet, we are committed to helping our clients make the best business decisions in all circumstances.
UtilNet provides Enterprise solutions to meet the business needs of leading organizations worldwide. Our consultancy services include revision of the existing business processes, development of recommendations for their reengineering in areas such as network planning, design, operation and management, information modeling of key business processes & cost and quality assessment of functions performed. Our consultancy and support services include the following to improve the performance of an operator's workforce:
- Process and functional requirements analysis
- Change Management
- Process Improvement and Management
- Technical Support


text:
version 0.77 or newer. See http://foswiki.org/System/ReleaseNotes01x01#Module_version_strings_and_new_module_dependency_in_1.1.6_and_1.1.7
version-.077 first shipped with perl v5.10.1
As far as errors with declare.al, I'm not familiar with that issue. I didn't see any hits at all for that particular error in google. I don't think foswiki uses anything like that. Maybe there is something wrong with the centos perl-version package.You might try installing version using cpan.
-- GeorgeClark - 21 Mar 2014
One other note, I did install the latest TwistyPlugin on a Foswiki 1.1.2 / Perl 5.8.8 system (not Centos though) using
version 0.9901. Foswiki Twisties are working correctly. I'm not sure what else to suggest.
"declare.al" is not mentioned in Foswiki, so this seems to be something internal to the Perl module.
-- GeorgeClark - 21 Mar 2014
You can also check if your package upgrade installed the correct version:
perl -Mversion -e 'print "$version::VERSION\n"'And finally, you could change the new version of
TwistyPlugin.pm to remove the dependency. Edit the file
lib/Foswiki/Plugins/TwistyPlugin.pm and remove the line marked here with a -, replacing it with the line marked + (but don't include the - or +),.
- use version; our $VERSION = version->declare("v1.6.18"); + our $VERSION = 'v1.6.18';-- GeorgeClark - 21 Mar 2014 Well, it looks like centos 5 is far outdated with its perl version packages. I am only using the base/updates and epel repositories. Maybe the best for me is try to upgrade to centos 6 or use another perl version compiled from scratch.
$ perl -Mversion -e 'print "$version::VERSION\n"' 0.7203I can also try to purge version package from TwistyPlugin as you have said. I just wonder what will happen when I do it. -- BernardoCosta - 24 Mar 2014 I looks like removing version package from TwistyPlugin have enabled the plugin in InstalledPlugins. I'll just do some tests on it to see if things are working as they should. -- BernardoCosta - 24 Mar 2014 See also Tasks.Item12583 -- MichaelDaum - 24 Mar 2014 Removing version from the package is completely safe on old Foswiki. -- GeorgeClark - 24 Mar 2014
|Using an extension
|Foswiki 1.1.2
|Related Topics


text:
A novel by Joe Donnelly
There is a town called Arden. Nestling in the Scottish hills, its tranquility masks a terrifying chilling secret. There is a journalist called Ryan. Drawn back to Arden by forces he cannot comprehend, he is the victim of nightmares that seem all too real. Then there is the watcher who waits for whatever is that sleeps beneath Ardhmor rock to wake..and destroy.
Used availability for Joe Donnelly's Bane
Hardback Editions
October 1989 : UK Hardback
Paperback Editions
March 1991 : UK Paperback
March 1991 : UK Paperback
Kindle Editions
February 2014 : USA, Australia, Canada, UK Kindle edition


text:
We have carbon monoxide detectors here at the office. If you'd like one now, feel free to stop by for them and instructions.
I will also be scheduling a day in July to install them in all units. They will be installed in all dwelling areas. 2bdrs will only have them upstairs. The 3bdrs will have one both downstairs and upstairs.
I will post the date here and in your mailboxes.