Pro Java 8 Programming 3rd Edition Terrill Brett Spell - Read the ebook online or download it for a complete experience
Pro Java 8 Programming 3rd Edition Terrill Brett Spell - Read the ebook online or download it for a complete experience
com
https://ebookname.com/product/pro-java-8-programming-3rd-
edition-terrill-brett-spell/
OR CLICK HERE
DOWLOAD EBOOK
https://ebookname.com/product/learning-reactive-programming-with-
java-8-1st-edition-nickolay-tsvetinov/
https://ebookname.com/product/java-8-in-action-lambdas-streams-
and-functional-style-programming-1st-edition-raoul-gabriel-urma/
https://ebookname.com/product/java-programming-comprehensive-
concepts-and-techniques-3rd-edition-gary-b-shelly/
https://ebookname.com/product/music-language-and-the-brain-
aniruddh-d-patel/
Understanding and Treating Obsessive Compulsive
Disorder A Cognitive Behavioral Approach 1st Edition
Jonathan S. Abramowitz
https://ebookname.com/product/understanding-and-treating-
obsessive-compulsive-disorder-a-cognitive-behavioral-
approach-1st-edition-jonathan-s-abramowitz/
https://ebookname.com/product/the-gulag-after-stalin-redefining-
punishment-in-khrushchev-s-soviet-union-1953-1964-1st-edition-
jeffrey-s-hardy/
https://ebookname.com/product/icd-10-cm-and-icd-10-pcs-coding-
handbook-with-answers-2019-rev-ed-nelly-leon-chisen/
https://ebookname.com/product/russian-lawyers-and-the-soviet-
state-the-origins-and-development-of-the-soviet-
bar-1917-1939-eugene-huskey/
https://ebookname.com/product/counting-the-dead-the-culture-and-
politics-of-human-rights-activism-in-colombia-california-series-
in-public-anthropology-1st-edition-winifred-tate/
Men s body sculpting 2nd Edition Nick Evans
https://ebookname.com/product/men-s-body-sculpting-2nd-edition-
nick-evans/
For your convenience Apress has placed some of the front
matter material after the index. Please use the Bookmarks
and Contents at a Glance links to access them.
Contents at a Glance
Index��������������������������������������������������������������������������������������������������������������������� 663
v
Introduction
It’s been a while since I last revised this material and even longer than that since the first edition was
published. In that time the technologies that Java programmers use have changed quite a bit and there’s no
doubt that if I were writing this book for the first time I would do some things differently. For example, I’d
place more of an emphasis on technologies related to web development to reflect the dominance that it has
in the industry today. Even so, it’s a little surprising to find out how relevant most of the original material
still is, and I hope that you’ll find both the principles and specific technology topics covered here useful in
learning how to program in Java.
xxix
Chapter 1
1
Chapter 1 ■ Going Inside Java
Java’s Architecture
It’s easy to think of Java as merely the programming language with which you develop your applications—writing
source files and compiling them into bytecode. However, Java as a programming language is just one
component of Java, and it’s the underlying architecture that gives Java many of its advantages, including
platform independence.
The complete Java architecture is actually the combination of four components:
• The Java programming language
• The Java class file format
• The Java APIs
• The JVM
So, when you develop in Java, you’re writing with the Java programming language, which is then
compiled into Java class files, and those in turn are executed in the JVM. In fact, these days the Java language
is just one of the options available if you want to use the rest of the Java platform. Scala, for example, has
generated a great deal of interest as an alternative to the Java language and is only one of many different
languages that use Java technology without also using the Java language.
The combination of the JVM and the core classes form the Java platform, also known as the Java
Runtime Environment (JRE), sits on whatever operating system is being used. Figure 1-1 shows how different
aspects of Java function relative to one another, to your application, and to the operating system.
2
Chapter 1 ■ Going Inside Java
The Java API is prewritten code organized into packages of similar topics. The Java API is divided into
three main platforms:
• Java Platform, Standard Edition (Java SE): This platform contains the core Java
classes and the graphical user interface (GUI) classes.
• Java Platform, Enterprise Edition (Java EE): This platform contains the classes
and interfaces for developing more complex “enterprise” applications; it contains
servlets, JavaServer Pages, and Enterprise JavaBeans, among others.
• Java Platform, Micro Edition (Java ME): In this platform, Java goes back to its
roots. It provides an optimized runtime environment for consumer products such as
Blu-ray disc players, cell phones, and various other types of hardware such as smart
appliances.
3
Chapter 1 ■ Going Inside Java
One feature (and some would say disadvantage) of bytecode is that it’s not executed directly by the
processor of the machine on which it’s run. The bytecode program is run through the JVM, which interprets
the bytecode, and that’s why Java is referred to as an interpreted language. In reality, Java’s days of being
a purely interpreted language are long gone, and the current architecture of most JVM implementations
is a mixture of interpretation and compilation. Interpretation is a relatively slow process compared to
compilation, and it was during the days of purely interpreted Java that it gained a reputation for being slower
than other languages. However, the newer interpreted/compiled hybrid model has largely eliminated the
speed difference in Java programs and those of other programming languages, making it appropriate for all
but the most resource-intensive applications.
Table 1-1 lists compiled versus interpreted languages.
It’s also worth noting that Java includes an API for interfacing with native applications (those written in
non-Java languages such as C and C++). This API is the Java Native Interface (JNI) API and allows developers
to call code written in a non-Java language from Java code, and vice versa. JNI accomplishes two things, one
of which is to allow your application to take advantage of operating system–specific features that wouldn’t
be available directly through Java. More to the point, JNI allows you to use a compiled language such as C
or C++ for functions used by your Java application where performance is critical. Using JNI does, however,
negate some of the platform independence of Java, as the native code is generally platform-specific, and
therefore the Java code will be tied to the target platform as well if it relies on the native code for some
functionality.
For machine portability to work, the JVM must be fairly tightly defined, and that’s achieved by the JVM
specification. That specification dictates the format of the bytecode recognized by the JVM as well as features
and functionality that must be implemented by the JVM. The JVM specification is what ensures the platform
independence of the Java language; you can find it on the Oracle web site.
In this context, referring to a “JVM” can mean any one of three different things:
• An abstract specification, such as the specification for Java 8.
• A concrete implementation of the specification.
• A runtime execution environment.
4
Chapter 1 ■ Going Inside Java
In 2006, Sun began transitioning Java from its original proprietary model—where Sun tightly controlled
the standards and reference implementation—to an open model. That transition resulted in changes in
how Java was managed, including the following:
• The full source code was made publicly available, or at least as much of it as Sun
could legally publish given associated licensing restrictions.
• Future changes and additions to Java have been handled through the Java
Community Process (JCP) instead of internally within Sun. The JCP is an open and
collaborative process for making decisions about the future of Java, though Sun
(and now Oracle) continued to play a prominent role in the decision-making process.
• The reference implementation of Java is now produced using an open source model
and is referred to as the Open Java Development Kit (OpenJDK).
Many JVM implementations still exist, but the OpenJDK remains the most commonly used implementation.
Why do different versions of the JVM exist? Remember, the JVM specification sets down the required
functionality for a JVM but doesn’t mandate how that functionality should be implemented. In an attempt
to maximize the use of Java, some flexibility to be creative with the platform was given. The important thing
is that whatever the implementation, a JVM must adhere to the guidelines defined by the Java specification.
In terms of platform independence, this means a JVM must be able to interpret bytecode that’s correctly
generated on any other platform.
5
Chapter 1 ■ Going Inside Java
In addition to the previous components, a JVM also needs memory in order to store temporary data
related to code execution, such as local variables, which method is executing, and so on. That data is stored
within the runtime data areas of the JVM, as explained next.
The Heap
The heap is a region of free memory that’s often used for dynamic or temporary memory allocation. The
heap is the runtime data area that provides memory for class and array objects. When class or array objects
are created in Java, the memory they require is allocated from the heap, which is created when the JVM
starts. Heap memory is reclaimed when references to an object or array no longer exist by an automatic
storage management system known as the garbage collection, which you’ll learn more about later.
The JVM specification doesn’t dictate how the heap is implemented; that’s left up to the creativity of
the individual implementations of the JVM. The size of the heap may be constant, or it may be allowed
to grow as needed or shrink if the current size is unnecessarily large. The programmer may be allowed
to specify the initial size of the heap; for example, on the Win32 and Solaris reference implementations,
you can do this with the –mx command-line option. Heap memory doesn’t need to be contiguous. If the
heap runs out of memory and additional memory can’t be allocated to it, the system will generate an
OutOfMemoryError exception.
The Stack
A Java stack frame stores the state of method invocations. The stack frame stores data and partial results
and includes the method’s execution environment, any local variables used for the method invocation, and
the method’s operand stack. The operand stack stores the parameters and return values for most bytecode
instructions. The execution environment contains pointers to various aspects of the method invocation.
6
Chapter 1 ■ Going Inside Java
Frames are the components that make up the JVM stack. They store partial results, data, and return
values for methods. They also perform dynamic linking and issue runtime exceptions. A frame is created
when a method is invoked and destroyed when the method exits for any reason. A frame consists of an
array of local variables, an operand stack, and a reference to the runtime constant pool of the class of the
current method.
When the JVM runs Java code, only one frame, corresponding to the currently executing method,
is active at any one time. This is referred to as the current frame. The method it represents is the current
method, and the class that includes that method is the current class. When a thread invokes a method
(each thread has its own stack), the JVM creates a new frame, which becomes the current frame, and pushes
it onto the stack for that thread.
As with the heap, the JVM specification leaves it up to the specific implementation of the JVM how
the stack frames are implemented. The stacks either can be of fixed size or can expand or contract in size
as needed. The programmer may be given control over the initial size of the stack and its maximum and
minimum sizes. Again, on Win32 and Solaris, this is possible through the command-line options –ss and
–oss. If a computation requires a larger stack than is possible, a StackOverflowError exception is generated.
Method Area
The method area is a common storage area shared among all JVM threads. It’s used to store such things as
the runtime constant pool, method data, field data, and bytecode for methods and constructors. The JVM
specification details only the general features of the method area but doesn’t mandate the location of the
area or dictate how the area is implemented. The method area may be a fixed size, or it may be allowed to
grow or shrink. The programmer may be allowed to specify the initial size of the method area, and the area
doesn’t need to be contiguous.
Registers
The registers maintained by the JVM are similar to registers on other computer systems. They reflect the
current state of the machine and are updated as bytecode is executed. The primary register is the program
counter (the pc register) that indicates the address of the JVM instruction that’s currently being executed.
If the method currently being executed is native (written in a language other than Java), the value of the
pc register is undefined. Other registers in the JVM include a pointer to the execution environment of the
current method, a pointer to the first local variable of the currently executing method, and a pointer to the
top of the operand stack.
7
Chapter 1 ■ Going Inside Java
Unfortunately, this approach often causes “memory leaks,” where memory is allocated and for one
reason or another never released. When that takes place repeatedly, the application will eventually run
out of memory and terminate abnormally or at least no longer be able to function. In contrast, Java never
requires the programmer to explicitly allocate or release memory, preventing many of the problems that
can occur. Instead, Java automatically allocates memory when you create an object, and Java will release the
memory when references to the object no longer exist.
Java uses what’s known as a garbage collector to monitor a Java program while it runs and automatically
releases memory used by objects that are no longer in use. Java uses a series of soft pointers to keep track of
object references and an object table to map those soft pointers to the object references. The soft pointers
are so named because they don’t point directly to the object but instead point to the object references
themselves. Using soft pointers allows Java’s garbage collector to run in the background using a separate
thread, and it can examine one object at a time. The garbage collector can mark, remove, move, or examine
objects by changing the object table entries.
The garbage collector runs on its own, and explicit garbage collector requests are generally not
necessary. The garbage collector performs its checking of object references sporadically during the
execution of a program, and when no references to an object exist, the memory allocated to that object
can be reclaimed. You can request that the garbage collector run by invoking the static gc() method in the
System class, though this represents a request that may or may not be honored and there’s no guarantee that
an object will be garbage collected at any given time.
Loading
The loading process itself is carried out by a class loader, which is an object that’s a subclass of ClassLoader;
the class loader will do some of its own verification checks on the class or interface it’s loading. An
exception is thrown if the binary data representing the compiled class or interface is malformed, if the
class or interface uses an unsupported version of the class file format, if the class loader couldn’t find the
definition of the class or interface, or if circularity exists. Class circularity occurs if a class or interface
would be its own superclass.
8
Chapter 1 ■ Going Inside Java
Two general types of class loader exist: the one supplied by the JVM, which is called the bootstrap
class loader, and user-defined class loaders. User-defined class loaders are always subclasses of Java’s
ClassLoader class and can be used to create Class objects from nonstandard, user-defined sources. For
instance, the Class object could be extracted from an encrypted file. A loader may delegate part or all of the
loading process to another loader, but the loader that ultimately creates the Class object is referred to as the
defining loader. The loader that begins the loading process is known as the initiating loader.
The loading process using the default bootstrap loader is as follows: The loader first determines if it has
already been recorded as the initiating loader of a class corresponding to the desired class file. If it has, the
Class object already exists, and the loader stops. (You should note here that loading a class isn’t the same as
creating an instance of it; this step merely makes the class available to the JVM.) If it’s not already loaded, the
loader searches for the class file and, if found, will create the Class object from that file. If the class file isn’t
found, a NoClassDefFoundError exception is generated.
When a user-defined class loader is used, the process is somewhat different. As with the bootstrap
loader, the user-defined loader first determines if it has already been recorded as the initiating loader of a
class file corresponding to the desired class file. If it has, the Class object already exists and the loader stops,
but if it doesn’t already exist, the user-defined loader invokes the loadClass() method. The return value of
that method is the desired class file, and the loadClass() method assembles the array of bytes representing
the class into a ClassFile structure. It then calls the defineClass() method, which creates a Class object
from the ClassFile structure; alternatively, the loadClass() method can simply delegate the loading to
another class loader.
Linking
The first step in the linking process is verifying the class files to be linked.
9
Chapter 1 ■ Going Inside Java
3. The third verification step also occurs during the linking phase. Every method
referenced in the class file is checked to ensure it adheres to the constraints
placed on methods by the Java language. The methods must be invoked with the
correct number and type of arguments. The operand stack must always be the
same size and contain the same types of values. Local variables must contain an
appropriate value before they’re accessed. Fields must be assigned values of the
proper type only.
4. The final step in the verification looks at events that occur the first time a method
is invoked and ensures that everything happens according to the specification.
The checks include ensuring that a referenced field or method exists in a given
class, verifying that the referenced field or method has the proper descriptor,
and ensuring that a method has access to the referenced method or field
when it executes.
Preparation
Once the class file has been verified, the JVM prepares the class for initialization by allocating memory space
for the class variables and also sets them to the default initial values. These are the standard default values,
such as 0 for int, false for Boolean, and so on. These values will be set to their program-dependent defaults
during the initialization phase.
Resolution
At this (optional) step, the JVM resolves the symbolic references in the runtime constant pool into
concrete values.
Initialization
Once the linking process is complete, any static fields and static initializers are invoked. Static fields have
values that are accessible even when there are no instances of the class; static initializers provide for static
initialization that can’t be expressed in a single expression. All these initializers for a type are collected by
the JVM into a special method. For example, the collected initializers for a class become the initialization
method <clinit>.
However, when initializing a class, not only must the class initialization method be invoked by the JVM
(only the JVM can call it) but in addition any superclasses must also be initialized (which also involves the
invocation of <clinit> for those classes). As a result, the first class that will always be initialized is Object.
The class containing the main() method for an application will always be initialized.
Bytecode Execution
The bytecode from a class file consists of a series of 1-byte opcode instructions specifying an operation
to be performed. Each opcode is followed by zero or more operands, which supply arguments or data
used by that operation. The JVM interpreter essentially uses a do...while loop that loads each opcode
and any associated operands and executes the action represented by the opcode. The bytecode is
translated into an action according to the JVM instruction set, which maps bytecode to operations
represented by the bytecode as specified by the JVM specifications. This process continues until all the
opcode has been interpreted.
10
Chapter 1 ■ Going Inside Java
The first set of instructions in the JVM instruction set involves basic operations performed on the
primitive data types and on objects. The nomenclature used is generally the data type followed by the
operation. For instance, the iload instruction (iload is merely a mnemonic representation of the actual
instruction) represents a local variable that’s an int being loaded onto the operand stack. The fload
instruction is for loading a local variable that’s a float onto the operand stack, and so on. There are a series
of instructions to store a value of a certain data type from the operand stack into a local variable, to load a
constant onto the operand stack, and to gain access to more than one local variable.
The second set in the instruction set concerns arithmetic operations, and the arithmetic operation
generally involves two values currently on the operand stack, with the result of the operation being pushed
onto the operand stack. The nomenclature is the same as before; for instance, the iadd operation is for
adding two integer values, and the dadd operation is for adding two double values.
Similarly, some operations represent basic mathematical functions (add, subtract, multiply, and
divide), some represent logical operations (bitwise OR, bitwise AND, and bitwise NOT), and some
specialized functions including remainder, negate, shift, increment, and comparison.
The JVM adheres to the IEEE 754 standards when it comes to things such as floating-point number
operations and rounding toward zero. Some integer operations—divide by zero, for instance—can throw
an ArithmeticException, while the floating-point operators don’t throw runtime exceptions but instead
will return a NaN (“Not a Number”—the result is an invalid mathematical operation) if an overflow
condition occurs.
The JVM instruction set includes operations for converting between different types. The JVM directly
supports widening conversions (for instance, float to double). The naming convention is the first type,
then 2, and then the second type. For example, the instruction i2l is for conversion of an int to a long.
The instruction set also includes some narrowing operations, the conversion of an int to a char, for
instance. The nomenclature for these operations is the same as for the widening operation.
Instructions exist for creating and manipulating class and array objects. The new command creates
a new class object, and the newarray, anewarray, and multilinearray instructions create array objects.
Instructions also exist to access the static and instance variables of classes, to load an array component onto
the operand stack, to store a value from the operand stack into an array component, to return the length of
an array, and to check certain properties of class objects or arrays.
The JVM instruction set provides the invokevirtual, invokeinterface, invokespecial, and
invokestatic instructions that are used to invoke methods, where invokevirtual is the normal method
dispatch mode. The other instructions are for methods implemented by an interface, methods requiring
special handling such as private or superclass methods, and static methods. Method return instructions are
also defined for each data type.
Another JVM instruction worth mentioning is invokedynamic, which was added to the JVM
specification for Java 7. Ironically, the instruction actually had little impact on the Java language in
that release, but it did provide the framework for a major change introduced in Java 8, namely, lambda
expressions which are covered in detail in Chapter 3. The older invocation instructions (invokevirtual,
invokeinterface, etc.) only supported what’s referred to as “static linking”; that is, the type of an object
that’s referenced is established at compile time. For example, when invokevirtual is used, the specific
method that’s called is known to exist because the type (class) of the object in which that method is defined
is known. That approach is referred to as static linking because it’s defined at compile time and can’t change
or be substituted later for a different type. In contrast to static linking, invokedynamic supports dynamic
linking, where the type of the object for which a method is invoked is determined at runtime, and any
type is valid as long as it meets certain criteria. Specifically, the method must accept parameters that are
consistent with what’s specified by the invocation, and any data type with a method satisfying that condition
is acceptable. Although invokedynamic didn’t really impact the Java language until Java 8, it did allow for
better implementations of other languages besides Java that use the JVM.
Finally, there’s a collection of miscellaneous instructions for doing various other operations, including
managing the operand stack, transferring control, throwing exceptions, implementing the finally keyword,
and synchronizing.
11
Other documents randomly have
different content
The sermon is simply a co-ordinate part of divine service, not its
governing feature to which all things else must be subordinated. The
early hymns should not be selected with reference to the theme of
the sermon; the last hymn should sum up not so much the ideas of
the sermon as its emotional values.
to the tune “Ariel” for the first hymn in spite of its appropriateness of
thought: first, because it is not sufficiently elevated, and secondly,
because the tune is too light. Watts’ more majestic hymn,
the interrupted dactylic measure and triple time tune giving both
dignity and movement.
a. Tender Service.
The organ prelude will be soft, sweet music, full of chromatic chords
that melt one into the other, or a tender, emotional melody with soft
accompaniment. The usual opening doxology will give way to an
introit, sung very gently by the choir, set to a text expressing divine
sympathy or a prayer for help. The invocation will be a plea for God’s
manifest presence among His needy people. The first hymn sung by
the congregation will sustain the feeling already established,
b. Joyful Service.
or
In this case the postlude will be bright and joyous, preferably with
some soft and tender episodical passages.
The first hymn may be Charles Wesley’s “Oh, for a thousand tongues
to sing.” This is worship—mingled with faith and with aggressive
purpose, it is true, but nevertheless distinctly worship.
An equally appropriate selection from Charles Wesley would be “Ye
servants of God, your Master proclaim.” Care should be taken that
the tune used for either is vigorous and well known. A dull tune for
either would be a stumble on the threshold of the service.
The point in the service has not yet been reached where a distinctly
missionary hymn is called for; aggressiveness in the Lord’s service is
still the mood to be created. There would be a choice between
Shurtleff’s vigorous “Lead on, O King Eternal,” with its specific
dedication of self to any forward movement of the Christian Church,
or Baring-Gould’s marching hymn with its American tune written by
an English composer, “Onward, Christian soldiers,” which can hardly
fail to stimulate the pulses of a presumably already stirred
congregation, unless it is sung in a drawling, unaccented way.
At the close of the sermon the hearts of the people will be glad to
express themselves either in Smith’s “The morning light is breaking,”
or in Watts’ noble Christianized version of the seventy-second Psalm,
“Jesus shall reign where’er the sun.” For once the organist can pull
out all his stops and play a brilliant but not flippant postlude 264
without disturbing the mind and nerves of thoughtful and
devout people.
But the minister must study the tunes in his hymnal lest he 265
limit his song service to the small number he happens to
know well. To use a dozen or so tunes again and again will cut the
nerve of musical interest in his musical helpers and in his
congregation as well.
266
Chapter XXI
THE ANNOUNCEMENT AND TREATMENT OF
HYMNS
Of course, if these devices for announcing the hymn are absent, the
preacher must announce the number. If he does so in a listless,
mechanical way, he will unconsciously give the congregation an
unfortunate emotional keynote, and, in turn, it will sing in a listless,
mechanical way. The psychical and emotional value of the singing of
the hymn is already discounted. If it has been announced in a
joyous, or, at least, in an interested spirit, with only a happy phrase
or two, giving a cue to the spirit in which it is to be sung, the
congregation will respond in kind. Twenty seconds of effective
introduction will make the difference between success and failure.
That may be done; but it cannot be done overnight. It will call for
persistent training, for a wealth of resources, and for an unbroken
attitude of genuineness of emotion on the part of the preacher. It is
no small undertaking to transform sleepy church members into sons
of praise.
On the other hand, if the minister’s mind and heart are 272
profoundly awake to the thought and feeling of the hymn
that is to be used, if the minister has a definite purpose which he
wishes to realize through the singing of that hymn, if the whole song
service is thoroughly vital and earnest, he cannot help reading the
hymn in such a way as to impress and interest his people. One need
not be a well-trained elocutionist to do this. The genuine feeling will
develop a natural elocution and will even neutralize faulty habits and
mannerisms of reading that would otherwise make it unendurable.
The fact that the hymn is a familiar one may be only an additional
reason for reading it, instead of being an imperative reason for
omitting its reading. As coins long in circulation often lose their
superscription, these familiar words often lose their meaning and
reality by constant use, and these may be restored by intelligent and
emotional reading.
The irony of the situation is that by this neglect of his hymns the
preacher fails to create the enthusiasm and responsiveness of his
hearers essential to the larger success of his sermon. “There is that
withholdeth more than is meet, but it tendeth to poverty.” (Prov.
11:24.)
It may well be that some of the ministers who read this practical
section will throw up their hands at the idea of working out the
rather daunting array of suggestions for exploiting the hymn in their
church work. The pastor’s task is such a varied one, with such a
mass of details, all of seeming importance, that he is in danger of
wasting time on comparative trifles, of “puttering” around, feeling
very busy while accomplishing little. A common remark at the close
of the day is, “I’ve been busy as a nailer all day and can’t see that I
have accomplished anything!”
God has put into the throat of every member of this preacher’s
congregation a marvelous musical instrument with a wide range of
tones and of extremely appealing cadences, of great power to
express the emotions of the heart of the singer, and to suggest and
stimulate the feelings of the minds and hearts of the hearers: is the
minister justified in neglecting the opportunity it offers to arouse and
quicken the mental and spiritual natures of the people for whose
religious life he is responsible?
A SINGING CHURCH
275
EPILOGUE
277
REFERENCES AND NOTES
INTRODUCTION
[1]
Genesis 4:21, 23.
[2]
Genesis 31:27.
[3]
Exodus 15:1-21.
[4]
Numbers 21:16, 17.
[5]
Psalm 90.
[6]
Joshua 6:16.
[7]
Judges 5:1-31.
[8]
I Samuel 2:1-16.
[9]
I Samuel 10:5.
[10]
I Chronicles 9:22; 11:4, 11:5.
[11]
Mark 14:26.
[12]
Acts 16:25.
[13]
Colossians 3:16.
[14]
James 5:13.
[15]
Revelation 5:9; 7:9-12; 11:15-18; 14:2,3; 15:3,4; 19:1-7.
CHAPTER I
[1]
Dr. Phelps goes on to say, “Yet the greatest of these, that grace
which above all else vitalizes a true hymn, is that which makes it
true—its fidelity to the realities of religious experience.”
[2]
“A hymn must have a beginning, middle, and end. There should
be a manifest graduation in the thoughts, and their mutual
dependence should be so perceptible that they could not be
transposed without injuring the unity of the piece; every line
carrying forward the connection, and every verse adding a well-
proportioned limb to a symmetrical body. The reader should
know when the strain is complete, and be satisfied, as at the
close of an air in music.” (James Montgomery.)
[3]
Dr. Parks, back in 1857, remarks: “That is not always the best
church song which sparkles most with rhetorical gems. There are
spangled hymns which will never excite devotional feeling.”
[4]
Sung at President McKinley’s funeral.
[5]
Greece never had a sacred book, she never had any symbols, any
sacerdotal caste organized for the preservation of dogmas. Her
poets and her artists were her true theologians. (Renan, in
Studies in Religious History.)
278
[6]
“Even when deeds and events of an innocent and pure
character are thus sung, there is nothing more of spiritual
worship in it than in the recitation of an epic poem. The singer
confesses no need, asks no blessing, reveals no yearning,
expects no response. There is no communion of thought and
feeling, no aspiration for purity, no laying hold of moral strength.”
(Rev. G. O. Newport, a missionary in India, quoted in The Hymn
Lover.)
CHAPTER II
[1]
The instinct to use song in worship was recognized so long ago as
1695 by Dr. Hickman: “There never was any land so barbarous,
or any people so polite, but have always approached their gods
with the solemnity of music and have expressed their devotions
with a song.” (Quoted by Dr. A. S. Hoyt in his Public Worship for
Non-Liturgical Churches.)
[2]
“Our hymns spring out of religious experience at its best, and they
tend to lift experience to its highest levels. The very cream of
truth and of soul life is gathered into them. They contain the
refined riches, the precious essences, the cut and polished jewels
of Christianity in all ages. They are truly prophetic, the records of
the insight and intuition and rapture of the seer and the saint.”
(Dr. Waldo S. Pratt, in Musical Ministries. [New York: Revell Co.,
1915.] Used by permission.)
[3]
Henry Ward Beecher placed a high value on the song service of
the church: “I have never loved men under any circumstances as
I have loved them while singing with them; never at any other
time have I been so near heaven with you, as in those hours
when our songs were wafted thitherward.”
[4]
“In all great religious movements the people have been inspired
with a passion for singing. They have sung their creed: it seems
the freest and most natural way of declaring their triumphant
belief in great Christian truths, forgotten or denied in previous
times of spiritual depression and now restored to their rightful
place in the thought and life of the Church. Song has expressed
and intensified their enthusiasm, their new faith, their new joy,
their new determination to do the will of God.” (Dr. W. R. Dale.)
[5]
Pratt, Musical Ministries.
[6]
Ephesians 5: 18-20.
[7]
Colossians 3: 16.
[8]
I Corinthians 14: 15.
[9]
Over three-quarters of a century ago, this lament was made by a
prominent New England minister: “Many a man, who carefully
interrogates his own experience, will confess that, while the voice
of public prayer readily engages his attention and carries with it
his devout desires, it is not so with the act of praise; that he very
seldom finds his affections rising upon its notes to heaven—very
seldom can he say at its close that he has worshiped God. The
song has been wafted near him as a vehicle for conveying
upward the sweet odor of a spiritual service, but the offering has
been withheld, and the song ascends as empty of divine honors
as a sounding brass or a tinkling cymbal.” (Rev. Daniel L. Furber,
in Hymns and Choirs.)
CHAPTER III
[1]
“To get behind the hymnbook to the men and women who wrote
its contents, and to the events, whether personal or public, out
of which it sprang and which it so graciously mirrors, is to enter a
world palpitating with human interest. For a hymnbook is a
transcript of real life, a poetical accompaniment to real events
and real experiences. Like all literature that counts, it rises
directly out of life.” (Frederick J. Gillman, in The Evolution of the
English Hymn. [New York: The Macmillan Co., 1927.] Used by
permission.)
279
[2]
J. Balcom Reeves, The Hymn in History and Literature.
(New York: D. Appleton-Century Co., 1924). Used by permission.
[3]
“There is an inclination to fence in what are called ‘literary lyrics,’
as if to fence out singing lyrics! Now there is, of course, a
distinction between poems meant to be sung and poems written
in the pattern of lyrical poetry, but never meant to be sung; but
the terminology which classes one kind as literary, thereby
implying that the other kind is not of the realm of literature, is
inaccurate and unhappy.” Ibid.
[4]
“In his volume, The English Lyric, Professor Felix E. Schelling
virtually disposes of the hymn with the remark that ‘we may or
may not “accept” certain hymns, but we do not have to read
them.’ That is readily granted—unless, of course, one wishes to
know them or to write just criticism about them.” Ibid.
[5]
“Frequently a hymn is a prayer; and it is a rule for the structure of
prayers that they exclude all those recondite figures, dazzling
comparisons, flashing metaphors, which, while grateful to certain
minds of poetic excitability, are offensive to more sober and staid
natures, and are not congenial with the lowly spirit of a suppliant
at the throne of grace. A simile may be shining, but it may not be
exactly chaste; and a hymn prefers pure beauty to bedizening
ornament.” (Dr. Edwards A. Park, in Hymns and Choirs.)
[6]
These numbers, of course, refer to the number of syllables in a
line.
CHAPTER IV
[1]
The vagaries of credit for writing given hymns is illustrated in the
appearance of the intensely Calvinistic Toplady’s name as the
writer of Charles Wesley’s intensely Arminian “Blow ye the
trumpet, blow.”
[2]
Those who care to make a fuller study of the revision of hymns
than the following discussion affords are referred to the full
treatment of the subject, and to the abundant cases cited, by
Professor Edwards A. Park, D.D., of Andover Theological
Seminary, in Hymns and Choirs, issued in 1860 by Drs. Austin
Phelps, Edwards A. Park, and Daniel L. Furber. The lapse of years
has in no way diminished the value of this volume. It is
unfortunately out of print and inaccessible to the average pastor,
outside of public libraries.
CHAPTER V
[1]
“But the emotional life, strongest, no doubt, in youth, remains a
lifelong element of personality and especially of the religious
personality. Feeling is not merely an integral part of religious
experience, it is central, vital, its inmost core. William James
speaks of it as the deeper source of religion, and says that
‘philosophical and theological formulas come below it in
importance. It is the dynamic factor in the religious life. When it
is absent, religion degenerates into mere formalism or barren
intellectualism.’” (Gillman, in The Evolution of the English Hymn.)
[2]
Rev. Louis F. Benson, D.D., in The Hymnody of the Christian
Church. (New York: Harper and Bros., 1927.) Used by permission.
280
CHAPTER VII
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
ebookname.com