how to convert pdf to jpg in c# windows application : Change security on pdf Library software API .net winforms web page sharepoint javanotes6-linked2-part287

CHAPTER 1. THE MENTAL LANDSCAPE
7
One use of interpreters is to execute high-level language programs. For example, the pro-
gramming language Lisp is usually executed by an interpreter rather than a compiler. However,
interpreters have another purpose: they can let you use a machine-language program meant
for one type of computer on a completely different type of computer. For example, there is a
program called “Virtual PC” that runs on Mac OS computers. Virtual PC is an interpreter that
executes machine-language programs written for IBM-PC-clone computers. If you run Virtual
PC on your Mac OS, you can run any PC program, including programs written for Windows.
(Unfortunately, a PC program will run much more slowly than it would on an actual IBM
clone. The problem is that Virtual PC executes several Mac OS machine-language instructions
for each PC machine-language instruction in the program it is interpreting. Compiled programs
are inherently faster than interpreted programs.)
∗ ∗ ∗
The designers of Java chose to use a combination of compilation and interpretation. Pro-
grams written in Java are compiled into machine language, but it is a machine language for
acomputer that doesn’t really exist. This so-called “virtual” computer is known as the Java
Virtual Machine, or JVM.The machine language for the Java Virtual Machine is called Java
bytecode. There is no reason why Java bytecode couldn’t be used as the machine language of a
real computer, rather than a virtual computer. But in fact the use of a virtual machine makes
possible one of the main selling points of Java: the fact that it can actually be used on any
computer. All that the computer needs is an interpreter for Java bytecode. Such an interpreter
simulates the JVM in the same way that Virtual PC simulates a PC computer. (The term JVM
is also used for the Java bytecode interpreter program that does the simulation, so we say that
acomputer needs a JVM in order to run Java programs. Technically, it would be more correct
to say that the interpreter implements the JVM than to say that it is a JVM.)
Of course, a different Java bytecode interpreter is needed for each type of computer, but
once a computer has a Java bytecode interpreter, it can run any Java bytecode program. And
the same Java bytecode program can be run on any computer that has such an interpreter.
This is one of the essential features of Java: the same compiled program can be run on many
different types of computers.
Java
Program
Compiler
Java
Bytecode
Program
Java Interpreter
for Mac OS
Java Interpreter
for Windows
Java Interpreter
for Linux
Why, you might wonder, use the intermediate Java bytecode at all? Why not just distribute
the original Java program and let each person compile it into the machine language of whatever
computer they want to run it on? There are many reasons. First of all, a compiler has to
understand Java, a complex high-level language. The compiler is itself a complex program. A
Java bytecode interpreter, on the other hand, is a fairly small, simple program. This makes it
easy to write abytecode interpreter for anew type of computer; once that is done, that computer
Change security on pdf - C# PDF Digital Signature Library: add, remove, update PDF digital signatures in C#.net, ASP.NET, MVC, WPF
Help to Improve the Security of Your PDF File by Adding Digital Signatures
decrypt pdf file; change security settings on pdf
Change security on pdf - VB.NET PDF Digital Signature Library: add, remove, update PDF digital signatures in vb.net, ASP.NET, MVC, WPF
Guide VB.NET Programmers to Improve the Security of Your PDF File by Adding Digital Signatures
decrypt pdf file online; secure pdf
CHAPTER 1. THE MENTAL LANDSCAPE
8
can run any compiled Java program. It would be much harder to write a Java compiler for the
same computer.
Furthermore, many Java programs are meant to be downloaded over a network. This leads
to obvious security concerns: you don’t want to download and run a program that will damage
your computer or your files. The bytecode interpreter acts as a buffer between you and the
program you download. You are really running the interpreter, which runs the downloaded
program indirectly. The interpreter can protect you from potentially dangerous actions on the
part of that program.
When Java was stilla new language, it was criticized for being slow: Since Java bytecode was
executed by an interpreter, it seemed that Java bytecode programs could never run as quickly
as programs compiled into native machine language (that is, the actual machine language of the
computer on which the program is running). However, this problem has been largely overcome
by the use of just-in-time compilers for executing Java bytecode. A just-in-time compiler
translates Java bytecode into native machine language. It does this while it is executing the
program. Just as for a normal interpreter, the input toa just-in-timecompiler is a Java bytecode
program, and its task is to execute that program. But as it is executing the program, it also
translates parts of it into machine language. The translated parts of the program can then be
executed much more quickly than they could be interpreted. Since a given part of a program is
often executed many times as the program runs, a just-in-time compiler can significantly speed
up the overall execution time.
Ishould note that there is no necessary connection between Java and Java bytecode. A pro-
gram written in Java could certainly be compiled into the machine language of a real computer.
And programs written in other languages could be compiled into Java bytecode. However, it is
the combination of Java and Java bytecode that is platform-independent, secure, and network-
compatible while allowing you to program in a modern high-level object-oriented language.
(In the past few years, it has become fairly common to create new programming languages,
or versions of old languages, that compile into Java bytecode. The compiled bytecode programs
can then be executed by a standard JVM. New languages that have been developed specifically
for programming the JVM include Groovy, Clojure, and Processing. Jython and JRuby are
versions of older languages, Python and Ruby, that target the JVM. These languages make it
possible to enjoy many of the advantages of the JVM while avoiding some of the technicalities
of the Java language. In fact, the use of other languages with the JVM has become important
enough that several new features have been added to the JVM in Java Version 7 specifically to
add better support for some of those languages.)
∗ ∗ ∗
Ishould also note that the really hard part of platform-independence is providing a “Graph-
ical User Interface”—with windows, buttons, etc.—that will work on all the platforms that
support Java. You’ll see more about this problem inSection1.6.
1.4 Fundamental Building Blocks of Programs
T
here are two basic aspects of programming: data and instructions. To work with
(online)
data, you need to understand variables and types; to work with instructions, you need to
understand control structures and subroutines. You’ll spend a large part of the course
becoming familiar with these concepts.
Avariable is just a memory location (or several locations treated as a unit) that has been
given a name so that it can be easily referred to and used in a program. The programmer only
VB.NET PDF Password Library: add, remove, edit PDF file password
Add password to PDF. Change PDF original password. Remove password from PDF. Set PDF security level. VB.NET: Necessary DLLs for PDF Password Edit.
change pdf document security properties; pdf password unlock
C# PDF Password Library: add, remove, edit PDF file password in C#
Able to change password on adobe PDF document in C#.NET. To help protect your PDF document in C# project, XDoc.PDF provides some PDF security settings.
copy paste encrypted pdf; cannot print pdf security
CHAPTER 1. THE MENTAL LANDSCAPE
9
has to worry about the name; it is the compiler’s responsibility to keep track of the memory
location. The programmer does need to keep in mind that the name refers to a kind of “box”
in memory that can hold data, even if the programmer doesn’t have to know where in memory
that box is located.
In Java and in many other programming languages, a variable has a type that indicates
what sort of data it can hold. One type of variable might hold integers—whole numbers such as
3, -7, and 0—while another holds floating point numbers—numbers with decimal points such as
3.14, -2.7, or 17.0. (Yes, the computer does make a distinction between the integer 17 and the
floating-point number 17.0; they actually look quite different inside the computer.) There could
also be types for individual characters (’A’, ’;’, etc.), strings (“Hello”, “A string can include
many characters”, etc.), and less common types such as dates, colors, sounds, or any other kind
of data that a program might need to store.
Programming languages always have commands for getting data into and out of variables
and for doing computations with data. For example, the following “assignment statement,”
which might appear in a Java program, tells the computer to take the number stored in the
variable named “principal”, multiply that number by 0.07, and then store the result in the
variable named “interest”:
interest = principal * 0.07;
There are also “input commands” for getting data from the user or from files on the computer’s
disks and “output commands” for sending data in the other direction.
These basic commands—for moving data from place to place and for performing
computations—are the building blocks for all programs. These building blocks are combined
into complex programs using control structures and subroutines.
∗ ∗ ∗
Aprogram is a sequence of instructions. In the ordinary “flow of control,” the computer
executes the instructions in the sequence in which they appear, one after the other. However,
this is obviously very limited: the computer would soon run out of instructions to execute.
Control structures are special instructions that can change the flow of control. There are
two basic types of controlstructure: loops, which allow asequence of instructions toberepeated
over and over, andbranches, which allow the computer to decide betweentwo or more different
courses of action by testing conditions that occur as the program is running.
For example, it might be that if the value of the variable “principal” is greater than 10000,
then the “interest” should be computed by multiplying the principal by 0.05; if not, then the
interest should be computed by multiplying the principal by 0.04. A program needs some
way of expressing this type of decision. In Java, it could be expressed using the following “if
statement”:
if (principal > 10000)
interest = principal * 0.05;
else
interest = principal * 0.04;
(Don’t worry about the details for now. Just remember that the computer can test a condition
and decide what to do next on the basis of that test.)
Loops are used when the same task has to be performed more than once. For example,
if you want to print out a mailing label for each name on a mailing list, you might say, “Get
the first name and address and print the label; get the second name and address and print
the label; get the third name and address and print the label...” But this quickly becomes
Online Change your PDF file Permission Settings
easy as possible to change your PDF file permission settings. You can receive the locked PDF by simply clicking download and you are good to go!. Web Security.
pdf security settings; add security to pdf document
C# HTML5 Viewer: Load, View, Convert, Annotate and Edit PDF
HTML5 Viewer. How to improve PDF document security. PDF Version. • C#.NET RasterEdge HTML5 Viewer supports adobe PDF version 1.3, 1.4, 1.5, 1.6 and 1.7.
change security settings pdf; add security to pdf in reader
CHAPTER 1. THE MENTAL LANDSCAPE
10
ridiculous—and might not work at all if you don’t know in advance how many names there are.
What you would like to say is something like “While there are more names to process, get the
next name and address, and print the label.” A loop can be used in a program to express such
repetition.
∗ ∗ ∗
Large programs are so complex that it would be almost impossible to write them if there
were not some way to break them up into manageable “chunks.” Subroutines provide one way to
do this. A subroutine consists of the instructions for performing some task, grouped together
as a unit and given a name. That name can then be used as a substitute for the whole set of
instructions. For example, suppose that one of the tasks that your program needs to perform
is to draw a house on the screen. You can take the necessary instructions, make them into
a subroutine, and give that subroutine some appropriate name—say, “drawHouse()”. Then
anyplace in your program where you need to draw a house, you can do so with the single
command:
drawHouse();
This will have the same effect as repeating all the house-drawing instructions in each place.
The advantage here is not just that you save typing. Organizing your program into sub-
routines also helps you organize your thinking and your program design effort. While writing
the house-drawing subroutine, you can concentrate on the problem of drawing a house without
worrying for the moment about the rest of the program. And once the subroutine is written,
you can forget about the details of drawing houses—that problem is solved, since you have a
subroutine to do it for you. A subroutine becomes just like a built-in part of the language which
you can use without thinking about the details of what goes on “inside” the subroutine.
∗ ∗ ∗
Variables, types, loops, branches, and subroutines are the basis of what might be called
“traditional programming.” However, as programs become larger, additional structure is needed
to help deal with their complexity. One of the most effective tools that has been found is object-
oriented programming, which is discussed in the next section.
1.5 Objects and Object-oriented Programming
P
rograms must be designed. No one can just sit down at the computer and compose a
(online)
program of any complexity. The discipline called software engineering is concerned with
the construction of correct, working, well-written programs. The software engineer tries to
use accepted and proven methods for analyzing the problem to be solved and for designing a
program to solve that problem.
During the 1970s and into the 80s, the primary software engineering methodology was
structured programming. The structured programming approach to program design was
based on the following advice: To solve a large problem, break the problem into several pieces
and work on each piece separately; to solve each piece, treat it as a new problemwhich can itself
be broken down into smaller problems; eventually, you will work your way down to problems
that can be solved directly, without further decomposition. This approach is called top-down
programming.
There is nothing wrong with top-down programming. It is a valuable and often-used ap-
proach to problem-solving. However, it is incomplete. For one thing, it deals almost entirely
with producing the instructions necessary to solve a problem. But as time went on, people
C# HTML5 Viewer: Deployment on AzureCloudService
RasterEdge.XDoc.PDF.HTML5Editor.dll. system.webServer> <validation validateIntegratedModeConfiguration="false"/> <security> <requestFiltering
convert locked pdf to word; pdf security password
Online Split PDF file. Best free online split PDF tool.
into Multiple ones. You can receive the PDF files by simply clicking download and you are good to go!. Web Security. We have a privacy
change pdf security settings reader; change pdf security settings
CHAPTER 1. THE MENTAL LANDSCAPE
11
realized that the design of the data structures for a program was at least as important as the
design of subroutines and control structures. Top-down programming doesn’t give adequate
consideration to the data that the program manipulates.
Another problem with strict top-down programming is that it makes it difficult to reuse
work done for other projects. By starting with a particular problem and subdividing it into
convenient pieces, top-down programming tends to produce a design that is unique to that
problem. It is unlikely that you will be able to take a large chunk of programming from another
program and fit it into your project, at least not without extensive modification. Producing
high-quality programs is difficult and expensive, so programmers and the people who employ
them are always eager to reuse past work.
∗ ∗ ∗
So, in practice, top-down design is often combined with bottom-up design. In bottom-up
design, the approach is to start “at the bottom,” with problems that you already know how to
solve (and for which you might already have a reusable software component at hand). From
there, you can work upwards towards a solution to the overall problem.
The reusable components shouldbe as “modular” as possible. A module is a component of a
larger system that interacts with the rest of the system ina simple, well-defined,straightforward
manner. The idea is that a module can be “plugged into” a system. The details of what goes on
inside the module are not important to the system as a whole, as long as the module fulfills its
assigned role correctly. This is called information hiding, and it is one of the most important
principles of software engineering.
One common format for software modules is to contain some data, along with some sub-
routines for manipulating that data. For example, a mailing-list module might contain a list of
names and addresses along with a subroutine for adding a new name, a subroutine for printing
mailing labels, and so forth. In such modules, the data itself is often hidden inside the module;
aprogram that uses the module can then manipulate the data only indirectly, by calling the
subroutines provided by the module. This protects the data, since it can only be manipulated
in known, well-defined ways. And it makes it easier for programs to use the module, since they
don’t have to worry about the details of how the data is represented. Information about the
representation of the data is hidden.
Modules that could support this kind of information-hiding became common in program-
ming languages in the early 1980s. Since then, a more advanced form of the same idea has
more or less taken over software engineering. This latest approach is called object-oriented
programming, often abbreviated as OOP.
The centralconcept of object-oriented programming is the object, which is a kind of module
containing data and subroutines. The point-of-view in OOP is that an object is a kind of self-
sufficient entity that has an internal state (the data it contains) and that can respond to
messages (calls to its subroutines). A mailing list object, for example, has a state consisting
of a list of names and addresses. If you send it a message telling it to add a name, it will
respond by modifying its state to reflect the change. If you send it a message telling it to print
itself, it will respond by printing out its list of names and addresses.
The OOP approach to software engineering is to start by identifying the objects involved in
aproblem and the messages that those objects should respond to. The program that results is
acollection of objects, each with its own data and its own set of responsibilities. The objects
interact by sending messages to each other. There is not much “top-down” in the large-scale
design of such a program, and people used to more traditional programs can have a hard time
getting used to OOP. However, people who use OOP would claim that object-oriented programs
Online Remove password from protected PDF file
If we need a password from you, it will not be read or stored. To hlep protect your PDF document in C# project, XDoc.PDF provides some PDF security settings.
change security on pdf; creating a secure pdf document
VB Imaging - VB Code 93 Generator Tutorial
with a higher density and data security compared with barcode on a certain page of PDF or Word use barcode relocation API solution to change barcode position
create pdf security; convert locked pdf to word online
CHAPTER 1. THE MENTAL LANDSCAPE
12
tend to be better models of the way the world itself works, and that they are therefore easier
to write, easier to understand, and more likely to be correct.
∗ ∗ ∗
You should think of objects as “knowing” how to respond to certain messages. Different
objects might respond to the same message in different ways. For example, a “print” message
would produce very different results, depending on the object it is sent to. This property of
objects—that different objects can respond to the same message in different ways—is called
polymorphism.
It is common for objects to bear a kind of “family resemblance” to one another. Objects
that contain the same type of data and that respond to the same messages in the same way
belong to the same class. (In actual programming, the class is primary; that is, a class is
created and then one or more objects are created using that class as a template.) But objects
can be similar without being in exactly the same class.
For example, consider a drawing program that lets the user draw lines, rectangles, ovals,
polygons, and curves on the screen. In the program, each visible object on the screen could be
represented by a software object in the program. There would be five classes of objects in the
program, one for each type of visible object that can be drawn. All the lines would belong to
one class, all the rectangles to another class, and so on. These classes are obviously related;
all of them represent “drawable objects.” They would, for example, all presumably be able to
respond to a “draw yourself” message. Another level of grouping, based on the data needed
to represent each type of object, is less obvious, but would be very useful in a program: We
can group polygons and curves together as “multipoint objects,” while lines, rectangles, and
ovals are “two-point objects.” (A line is determined by its endpoints, a rectangle by two of its
corners, and an oval by two corners of the rectangle that contains it.) We could diagram these
relationships as follows:
DrawableObject
MultipointObject
TwoPointObject
Polygon
Curve
Line
Rectangle
Oval
DrawableObject, MultipointObject, and TwoPointObject would be classes in the program.
MultipointObject and TwoPointObject would be subclasses of DrawableObject. The class
Line would be a subclass of TwoPointObject and (indirectly) of DrawableObject. A subclass of
aclass is saidto inherit the properties of that class. The subclass canaddto its inheritance and
it can even“override” part of that inheritance (by defininga different response to some method).
Nevertheless, lines, rectangles, and so on are drawable objects, and the class DrawableObject
expresses this relationship.
Inheritance is a powerful means for organizing a program. It is also related to the problem
of reusing software components. A class is the ultimate reusable component. Not only can it
be reused directly if it fits exactly into a program you are trying to write, but if it just almost
CHAPTER 1. THE MENTAL LANDSCAPE
13
fits, you can still reuse it by defining a subclass and making only the small changes necessary
to adapt it exactly to your needs.
So, OOP is meant to be both a superior program-development tool and a partial solution
to the software reuse problem. Objects, classes, and object-oriented programming will be
important themes throughout the rest of this text. You will start using objects that are built
into the Java language in the next chapter, and inChapter5you will begin creating your own
classes and objects.
1.6 The Modern User Interface
W
hen computers werefirst introduced,ordinary people—includingmost programmers—
(online)
couldn’t get near them. They were locked up in rooms with white-coated attendants who would
take your programs and data, feed them to the computer, and return the computer’s response
some time later. When timesharing—where the computer switches its attention rapidly from
one person to another—was invented in the 1960s, it became possible for several people to
interact directly with the computer at the same time. On a timesharing system, users sit at
“terminals” where they type commands to the computer, and the computer types back its re-
sponse. Early personal computers also used typed commands and responses, except that there
was only one person involved at a time. This type of interaction between a user and a computer
is called a command-line interface.
Today, of course, most people interact with computers in a completely different way. They
use a Graphical User Interface, or GUI. The computer draws interface components on the
screen. The components include things like windows, scroll bars, menus, buttons, and icons.
Usually, a mouse is used to manipulate such components. Assuming that you have not just
been teleported in from the 1970s, youare no doubt already familiar withthe basics of graphical
user interfaces!
Alot of GUI interface components have become fairly standard. That is, they have similar
appearance and behavior on many different computer platforms including Mac OS, Windows,
and Linux. Java programs, which are supposed to run on many different platforms without
modification to the program, can use all the standard GUI components. They might vary a
little in appearance from platform to platform, but their functionality should be identical on
any computer on which the program runs.
Shown below is an image of a very simple Java program—actually an “applet”, since it is
meant to appear on a Web page—that shows a few standard GUI interface components. There
are four components that the user can interact with: a button, a checkbox, a text field, and a
pop-up menu. These components are labeled. There are a few other components in the applet.
The labels themselves are components (even though you can’t interact with them). The right
half of the applet is a text area component, which can display multiple lines of text. And a
scrollbar component appears alongside the text area when the number of lines of text becomes
larger than will fit in the text area. And in fact, in Java terminology, the whole applet is itself
considered to be a “component.”
CHAPTER 1. THE MENTAL LANDSCAPE
14
Now, Java actually has two complete sets of GUI components. One of these, the AWT or
Abstract Windowing Toolkit, was available in the original version of Java. The other, which
is known as Swing, is included in Java version 1.2 or later, and is used in preference to the
AWT in most modern Java programs. The applet that is shown above uses components that
are part of Swing. If Java is not installed in your Web browser or if your browser uses a very old
version of Java, you might get an error when the browser tries to load the applet. Remember
that most of the applets in this textbook require Java 5.0 (or higher).
When a user interacts with the GUI components in this applet, an “event” is generated.
For example, clicking a push button generates an event, and pressing return while typing in a
text field generates an event. Each time an event is generated, a message is sent to the applet
telling it that the event has occurred, and the applet responds according to its program. In
fact, the program consists mainly of “event handlers” that tell the applet how to respond to
various types of events. In this example, the applet has been programmed to respond to each
event by displaying a message in the text area. In a more realistic example, the event handlers
would have more to do.
The use of the term “message” here is deliberate. Messages, as you saw in the previous sec-
tion, are sent to objects. In fact, Java GUI components are implemented as objects. Java
includes many predefined classes that represent various types of GUI components. Some of
these classes are subclasses of others. Here is a diagram showing some of Swing’s GUI classes
and their relationships:
JComponent
JLabel
JAbstractButton
JComboBox
JTextComponent
JButton
JToggleButton
JCheckBox
JRadioButton
JScrollbar
JTextField
JTextArea
Don’t worry about the details for now, but try to get some feel about how object-oriented
programming and inheritance are used here. Note that all the GUI classes are subclasses,
directly or indirectly, of a class called JComponent, which represents general properties that are
shared by all Swing components. Two of the direct subclasses of JComponent themselves have
subclasses. The classes JTextArea and JTextField, which have certain behaviors in common,
are grouped together as subclasses of JTextComponent. Similarly JButton and JToggleButton
CHAPTER 1. THE MENTAL LANDSCAPE
15
are subclasses of JAbstractButton, which represents properties common to both buttons and
checkboxes. (JComboBox, by the way, is the Swing class that represents pop-up menus.)
Just from this brief discussion, perhaps you can see how GUI programming can make effec-
tive use of object-oriented design. In fact, GUI’s, with their “visible objects,” are probably a
major factor contributing to the popularity of OOP.
Programming with GUI components and events is one of the most interesting aspects of
Java. However, we will spend several chapters on the basics before returning to this topic in
Chapter 6.
1.7 The Internet and Beyond
C
omputers can be connected together on networks. A computer on a network can
(online)
communicate with other computers on the same network by exchanging data and files or by
sending and receiving messages. Computers on a network can even work together on a large
computation.
Today, millions of computers throughout the world are connected to a single huge network
called the Internet. New computers are being connected to the Internet every day, both
by wireless communication and by physical connection using technologies such as DSL, cable
modems, or Ethernet.
There are elaborate protocols for communication over the Internet. A protocol is simply a
detailed specification of how communication is to proceed. For two computers to communicate
at all, they must both be using the same protocols. The most basic protocols on the Internet are
the Internet Protocol (IP), which specifies how data is to be physically transmitted from one
computer to another, and the Transmission Control Protocol (TCP), which ensures that
data sent using IP is received in its entirety and without error. These two protocols, which are
referred to collectively as TCP/IP, provide a foundation for communication. Other protocols
use TCP/IP to send specific types of information such as web pages, electronic mail, and data
files.
All communication over the Internet is in the form of packets. A packet consists of some
data being sent from one computer to another, along with addressing information that indicates
where on the Internet that data is supposed to go. Think of a packet as an envelope with an
address on the outside and a message on the inside. (The message is the data.) The packet
also includes a “return address,” that is, the address of the sender. A packet can hold only
alimited amount of data; longer messages must be divided among several packets, which are
then sent individually over the net and reassembled at their destination.
Every computer on the Internet has an IP address, a number that identifies it uniquely
among all the computers on the net. The IP address is used for addressing packets. A computer
can only send data to another computer on the Internet if it knows that computer’s IP address.
Since people prefer to use names rather than numbers, most computers are also identified by
names, called domain names. For example, the main computer of the Mathematics Depart-
ment at Hobart and William Smith Colleges has the domain name math.hws.edu. (Domain
names are just for convenience; your computer still needs to know IP addresses before it can
communicate. There are computers on the Internet whose job it is to translate domain names
to IP addresses. When you use a domain name, your computer sends a message to a domain
name server to find out the corresponding IP address. Then, your computer uses the IP address,
rather than the domain name, to communicate with the other computer.)
The Internet provides a number of services to the computers connected to it (and, of course,
CHAPTER 1. THE MENTAL LANDSCAPE
16
to the users of those computers). These services use TCP/IP to send various types of data over
the net. Among the most popular services are instant messaging, file sharing, electronic mail,
and the World-Wide Web. Each service has its own protocols, which are used to control
transmission of data over the network. Each service also has some sort of user interface, which
allows the user to view, send, and receive data through the service.
For example, the email service uses a protocol known as SMTP (Simple Mail Transfer
Protocol) to transfer email messages from one computer to another. Other protocols, such as
POP and IMAP, are used to fetch messages from an email account so that the recipient can
read them. A person who uses email, however, doesn’t need to understand or even know about
these protocols. Instead, they are used behind the scenes by computer programs to send and
receive email messages. These programs provide the user with an easy-to-use user interface to
the underlying network protocols.
The World-Wide Web is perhaps the most exciting of network services. The World-Wide
Web allows you to request pages of information that are stored on computers all over the
Internet. A Web page can contain links to other pages on the same computer from which it
was obtained or to other computers anywhere in the world. A computer that stores such pages
of information is called a web server. The user interface to the Web is the type of program
known as a web browser. Common web browsers include Internet Explorer and Firefox. You
use a Web browser to request a page of information. The browser sends a request for that
page to the computer on which the page is stored, and when a response is received from that
computer, the web browser displays it to you in a neatly formatted form. A web browser is just
auser interface to the Web. Behind the scenes, the web browser uses a protocol called HTTP
(HyperText Transfer Protocol) to send each page request and to receive the response from the
web server.
∗ ∗ ∗
Now just what, you might be thinking, does all this have to do with Java? In fact, Java
is intimately associated with the Internet and the World-Wide Web. As you have seen in the
previous section, special Java programs called applets are meant to be transmitted over the
Internet and displayed on Web pages. A Web server transmits a Java applet just as it would
transmit any other type of information. A Web browser that understands Java—that is, that
includes an interpreter for the Java Virtual Machine—can then run the applet right on the Web
page. Since applets are programs, they can do almost anything, including complex interaction
with the user. With Java, a Web page becomes more than just a passive display of information.
It becomes anything that programmers can imagine and implement.
But applets are only one aspect of Java’s relationship with the Internet, and not the major
one. In fact, as both Java and the Internet have matured, applets have become much less
important. At the same time, however, Java has increasingly been used to write complex,
stand-alone applications that do not depend on a Web browser. Many of these programs are
network-related. For example many of the largest and most complex web sites use web server
software that is written in Java. Java includes excellent support for network protocols, and
its platform independence makes it possible to write network programs that work on many
different types of computer. You will learn about Java’s network support inChapter11.
Its association with the Internet is not Java’s only advantage. But many good programming
languages have been invented only to be soon forgotten. Java has had the good luck to ride on
the coattails of the Internet’s immense and increasing popularity.
∗ ∗ ∗
As Javahas matured, its applications have reached far beyondthe Net. The standardversion
Documents you may be interested
Documents you may be interested