100% found this document useful (8 votes)
55 views

Complete Download (Ebook) Java 17 Recipes - A problem-solution approach by Josh Juneau PDF All Chapters

The document provides an overview of the ebook 'Java 17 Recipes: A Problem-Solution Approach' by Josh Juneau, which includes various recipes to help programmers get started with Java 17. It covers installation, configuration of the Java Development Kit (JDK), and setting up an Integrated Development Environment (IDE) like Eclipse. The content is aimed at both beginners and experienced programmers transitioning to Java, emphasizing practical problem-solving techniques rather than a complete tutorial.

Uploaded by

busicazami8j
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (8 votes)
55 views

Complete Download (Ebook) Java 17 Recipes - A problem-solution approach by Josh Juneau PDF All Chapters

The document provides an overview of the ebook 'Java 17 Recipes: A Problem-Solution Approach' by Josh Juneau, which includes various recipes to help programmers get started with Java 17. It covers installation, configuration of the Java Development Kit (JDK), and setting up an Integrated Development Environment (IDE) like Eclipse. The content is aimed at both beginners and experienced programmers transitioning to Java, emphasizing practical problem-solving techniques rather than a complete tutorial.

Uploaded by

busicazami8j
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 81

Download the Full Ebook and Access More Features - ebooknice.

com

(Ebook) Java 17 Recipes - A problem-solution


approach by Josh Juneau

https://ebooknice.com/product/java-17-recipes-a-problem-
solution-approach-38503542

OR CLICK HERE

DOWLOAD EBOOK

Download more ebook instantly today at https://ebooknice.com


Instant digital products (PDF, ePub, MOBI) ready for you
Download now and discover formats that fit your needs...

Start reading on any device today!

(Ebook) Java 17 Recipes: A Problem-Solution Approach by


Josh Juneau, Luciano Manelli ISBN 9781484279632,
1484279638
https://ebooknice.com/product/java-17-recipes-a-problem-solution-
approach-43535550

ebooknice.com

(Ebook) Java 17 Recipes: A Problem-Solution Approach by


Josh Juneau, Luciano Manelli ISBN 9781484279625,
148427962X
https://ebooknice.com/product/java-17-recipes-a-problem-solution-
approach-38498860

ebooknice.com

(Ebook) Java EE 7 Recipes: A Problem-Solution Approach by


Juneau, Josh ISBN 9781430244257, 1430244259

https://ebooknice.com/product/java-ee-7-recipes-a-problem-solution-
approach-55585796

ebooknice.com

(Ebook) Java 9 Recipes: A Problem-Solution Approach by


Josh Juneau ISBN 9781484219751, 9781484219768, 1484219759,
1484219767
https://ebooknice.com/product/java-9-recipes-a-problem-solution-
approach-5880824

ebooknice.com
(Ebook) Java EE 7 Recipes: A Problem-Solution Approach by
Josh Juneau (auth.) ISBN 9781430244257, 9781430244264,
1430244259, 1430244267
https://ebooknice.com/product/java-ee-7-recipes-a-problem-solution-
approach-4241208

ebooknice.com

(Ebook) Jakarta EE Recipes: A Problem-Solution Approach by


Josh Juneau ISBN 9781484255865, 1484255860

https://ebooknice.com/product/jakarta-ee-recipes-a-problem-solution-
approach-53793222

ebooknice.com

(Ebook) Java EE to Jakarta EE 10 Recipes: A Problem-


Solution Approach for Enterprise Java by Josh Juneau,
Tarun Telang ISBN 9781484280782, 1484280784
https://ebooknice.com/product/java-ee-to-jakarta-ee-10-recipes-a-
problem-solution-approach-for-enterprise-java-44145118

ebooknice.com

(Ebook) Java 7 Recipes: A Problem-Solution Approach by


Juneau, Josh, Beaty, Mark, Dea, Carl, Guime, Freddy,
OConner, John ISBN 9781430240563, 1430240563
https://ebooknice.com/product/java-7-recipes-a-problem-solution-
approach-55591494

ebooknice.com

(Ebook) Oracle PL SQL Recipes: A Problem-Solution Approach


by Josh Juneau, Matt Arena ISBN 9781430232070, 1430232072

https://ebooknice.com/product/oracle-pl-sql-recipes-a-problem-
solution-approach-1756442

ebooknice.com
CHAPTER 1

Getting Started with


Java 17
This chapter presents a handful of recipes to help programmers who are new to the Java
language and those with experience in other languages become accustomed to Java 17.
You learn to install Java and configure an integrated development environment (IDE)
from which you develop applications and experiment with the solutions provided in this
book. For security reasons, we don’t recommend installing something unless absolutely
necessary. With no alternative, it is easier and safer to download a compressed version
and run the relevant scripts for the respective operating system. You should be able to
adapt our instructions to install in the future any latest versions and releases of all the
packages mentioned in the book without any problem. You learn the basics of Java, such
as creating a class and accepting keyboard input. Documentation is often overlooked,
but you also quickly learn how to create great documentation for your Java code in this
chapter.

Note Java 17 Recipes is not intended as a complete tutorial. Rather, it covers key
concepts of the Java language. If you are truly new to Java, you may want to pick
up Java 17 for Absolute Beginners by Iuliana Cosmina (Apress, 2022).

1-1. Installing Java


Problem
You want to install Java and experiment with the language.

1
© Josh Juneau, Luciano Manelli 2022
J. Juneau and L. Manelli, Java 17 Recipes, https://doi.org/10.1007/978-1-4842-7963-2_1
Chapter 1 Getting Started with Java 17

Solution
Install Java Development Kit 17 (JDK), which provides the language and a compiler.
Nothing runs without Java. The runtime environment (JRE) lets you execute Java.
The JDK lets you compile Java sources into executable classes. There are two main
distributions: Oracle JDK and OpenJDK. We chose the second one under the GNU
General Public License because the Oracle JDK license changed for releases starting
in April 2019, permitting only certain uses at no cost. However, you can download the
commercial builds of JDK from Oracle under a non-open-source license at the Oracle
Technology Network.
Download the OpenJDK release for your platform from https://jdk.java.net/17/,
shown in Figure 1-1 and extract the archive file on your PC.

Figure 1-1. OpenJDK 17 home page

2
Chapter 1 Getting Started with Java 17

How It Works
Java is a trademark owned by the Oracle Corporation. The language itself is open source,
and its evolution is controlled by the Java Community Process (JCP). You can read about
it at www.jcp.org/en/home/index. While Oracle Corporation does not own the language,
its core development tends to be steered by that company. It is Oracle Corporation that
runs the JCP and owns the jcp.org domain.
The Java home folder has the bin subfolder that help you to develop and execute
programs in Java language (with tools and utilities) and that supports the execution of
programs written in the Java programming language (with an implementation of the Java
Runtime Environment (JRE), class libraries, and other files). Since Java 11, Oracle and
the OpenJDK team decided to distribute only the JDK and stop duplicating some of the
things in JDK in the JRE folder.
There are many editions of Java, such as the Mobile Edition (ME) (www.oracle.com/
java/technologies/javameoverview.html) and the Enterprise Edition (EE)
(www.oracle.com/it/java/technologies/java-­ee-­glance.html). Java SE is the
Standard Edition and represents the heart of the language. We built the recipes in this
book for Java SE programmers. Those interested in developing embedded applications
for devices may be interested in learning more about Java ME. Similarly, those interested
in developing web applications and working with enterprise solutions may be interested
in learning more about Java EE.
OpenJDK and Oracle JDK binaries are compatible and close to each other, but there
are some differences.

• Oracle JDK source code includes the following text: “ORACLE


PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.”
The OpenJDK refers to the GPL license terms.

• The output of Java the version in Oracle JDK includes the Oracle-­
specific identifier. OpenJDK does not include the Oracle-specific
identifier.

• Oracle JDK uses the Java Cryptography Extension (JCE) Code Signing
Certificate. OpenJDK allows unsigned third-party crypto providers.

• OpenJDK is offered only as a compressed archive. Oracle JDK offers


installers.

3
Chapter 1 Getting Started with Java 17

Go to www.oracle.com/java/technologies/javase/17-­relnote-­issues.html for
more information on the Oracle JDK.

1-2. Configuring the PATH


Problem
You want to test the Java installation and compile Java from the command line.

Solution
Add the JDK path to the PATH environment variable. You should have the jdk-17 folder
at the root of your OS drive or a custom location.
In Windows, search and for select the control panel. Click the Advanced System
settings and then Environment Variables. In the System Variables section, find the PATH
environment variable and select it. In the Edit System Variable field or the New System
Variable field, insert the text C:\jdk-17\bin; in the field “Variable value”. You can also set
the JAVA_HOME with the value of C:\jdk-17 and, then, set in the Path the value %JAVA_
HOME%\bin). The semicolon at the end of the text is essential because it separates the
new path from the existing ones. Do not insert additional spaces before or after.
In Unix and Linux systems, you edit the environment file and modify the PATH
variable. In this case, you execute a command such as the following.

export PATH=/usr/local/jdk-17/ /bin

At last, to find out if the path is properly set, open a command-line window, go to the
command prompt, and type the following command.

java -version.

If you see a screen like the one shown in Figure 1-2, the correct Java version is
installed.

Note A terminal (or command prompt in Windows) is a command-line interface


that allows you to control your operating system by using a command prompt.

4
Chapter 1 Getting Started with Java 17

Figure 1-2. Testing Java version

How It Works
To compile and execute a Java program, you must add the JDK path to the PATH
environment variable (a string of paths separated by semicolons in Windows and colons
in Unix OS). All operating systems use the PATH environment variable to determine
where executable files are located on your system to execute any stored or downloaded
file on your personal computer. This variable tells the operating systems where the to-­
run programs reside when a user executes a file. The environment variables can also be
stored information used by applications or operating systems.
PATH contains a string of directories separated by semicolons in Windows and
colons in Unix OS. PATH is used because any executable file in the directories listed
in PATH can be executed without specifying the full path to the file. This allows you
to run those executables with only the file name from the command line or for other
applications to run those executables without knowledge of their directory path.
So, when you execute a file, you need to specify the full path to that file, but if the
command does not include the path, the OS uses the executable file that matches your
file in the PATH.

1-3. Testing Java


Problem
You want to compile Java from the command line.

Solution
Use the little application shown in Listing 1-1. You can use a smart editor like Notepad++
or a different text editor in this example.

5
Chapter 1 Getting Started with Java 17

To create the source code for your first Java program, you must do the following.

1. Declare a class named Hello.

2. Declare public static void main(String args[]) or String... args


as the main method.

3. Enter the System.out.println(“Hello World”) command to display


“Hello World” in the command prompt window.

Listing 1-1. Hello.java

public class Hello {


   public static void main(String args[]){
     System.out.println("Hello World");
   }
}

Now, save the file as Hello.java in your working folder. Open the command window.
After changing to your work directory, enter the following to compile the application.

javac Hello.java

It should return the prompt without saying anything. It also means that you have
correctly updated the Path system variable. If you want to know more about what the
javac compiler is doing, type -verbose between javac and the name of the file (javac
-verbose Hello.java). You see a file named Hello.class in your work directory.
Enter the following in the command prompt to run the application (see Figure 1-3).

java Hello

Figure 1-3. Testing a Java class

6
Chapter 1 Getting Started with Java 17

Note All the code described in this book is available for download from github
.com/apress/java17-recipes. In this case, you can simply type the code;
in others, you don’t need to retype it. It is important that you improve your
programming skills using the Eclipse Environment, which is a famous free and
open source Java IDE, containing a workspace for developing applications, that
you can download at www.eclipse.org. You can find the examples in folders
with the same names as the corresponding chapters.

How It Works
Java is an object-oriented programming language based on classes and objects with
attributes and methods. A class is necessary for creating objects. To create a Java
program (i.e., a .class file), you must create a .java file. A .java file is a readable text file,
while a .class file is a binary file, which is a file containing Java bytecode that can be
executed on the Java Virtual Machine (JVM), and that is produced by a Java compiler
from the .java file.

Tip You must compile source code. Source code is kept in files with a .java
suffix, so your operating system’s file and directory path notation are appropriate.
One executes a class. A class is an abstract concept in the language, so its dot-­
notation becomes appropriate (i.e., it is necessary to write a dot (.) after the name
of the instance of a class followed by the method to be used). Keep this distinction
in mind to help yourself remember when to use which notation.

The Main Program


The incantation public static void main(...) is used from within a public class to
denote the entry point of a Java program. That declaration begins an executable method
named main. You must specify one parameter that is an array of strings, and typically that
parameter is defined as String[] args. When you execute the currently selected class,
the JVM transfers control to the main() method, which makes a call to System.out
.println() to show the Hello World message displayed in the command window.

7
Chapter 1 Getting Started with Java 17

1-4. Installing Eclipse


Problem
You want to install a reasonable IDE to use with it.

Solution
Install the Eclipse IDE to provide a more productive working environment.
First, you need to download the package. Go to www.eclipse.org/downloads/
packages/ and click Eclipse IDE for Java Developers, as shown in Figure 1-4.

Figure 1-4. Downloading Eclipse

8
Chapter 1 Getting Started with Java 17

The website suggests a mirror site for the download. The installation of Eclipse is
very easy: expand the downloaded file in the root of your personal computer. When you
execute Eclipse, it asks you to select a workspace. The workspace is the folder where
Eclipse stores your development projects. Therefore, it makes sense to place it on a drive
or in a directory that you back up regularly. Before clicking the OK button, select the Use
this as the default and do not ask again check box. It makes your life easier. You can
choose the root and use the eclipse-workspace default folder, which is the user’s home
directory. The first time it executes, Eclipse displays a Welcome screen. To enter the
screen where you do development, click the Workbench icon, as shown in Figure 1-5.

Figure 1-5. Eclipse–the Welcome screen

The IDE is ready. You should see a workspace resembling the one in Figure 1-6.

9
Chapter 1 Getting Started with Java 17

Figure 1-6. Opening the Eclipse IDE

Next, you need to tell Eclipse what version of JDK to use. In Windows OS, go to the
Windows menu and select Preferences. Select Java and then Installed JREs. You see the
dialog shown in Figure 1-7. Click Edit and select the installed JDK.

Figure 1-7. Eclipse–JDK configuration


10
Chapter 1 Getting Started with Java 17

You can verify that Eclipse uses the correct JDK. Go to Help ➤ About Eclipse IDE and
click the Installation Detail button. You can see the path and the name of the installed
and used JDK, as shown in Figure 1-8.

Figure 1-8. Eclipse installation details

How It Works
Although it’s possible to build web applications by compiling Java modules from the
command line, it’s more efficient to use an IDE. This way, you can concentrate on the
more creative part of developing software rather than fix inconsistency and fiddle with
folder hierarchies.
An IDE integrates all the applications that you need to develop software—from
a source editor and a compiler to tools to automate the application building process
and a debugger—into a single application. When developing in Java or another object-­
oriented language, an IDE also includes tools to visualize class and object structure and
inheritance and containment. Another advantage of using an IDE is that it propagates
changes you make to individual modules. For example, if you rename a class, the IDE
can automatically update its occurrences throughout your project files.

11
Chapter 1 Getting Started with Java 17

As the applications you develop become more complex, it makes more and more
sense to use an IDE. That’s why, before continuing to the next project, let’s discuss how
to install and configure Eclipse.
Eclipse is an extremely powerful and extensible IDE, well suited for web application
development. The Eclipse Foundation makes a new release four times a year (in March,
June, September, and December) due to continuous integration and delivery in the
software industry (called the rolling release). Once you’ve installed Eclipse to develop
your applications, you can also use it for any other software development task, such as
developing and debugging applications written in Java, C++, Python through a plug-in,
or Fortran, which is widely used in the scientific community.
Furthermore, whatever task related to software development you need to perform,
it’s likely that somebody has already developed an Eclipse plug-in for it. The Eclipse
Marketplace website (http://marketplace.eclipse.org) lists about 2,000 plug-ins
organized in dozens of categories. Eclipse consists of a core platform that executes
plug-ins, plus a series of plug-ins that implement most of its functionality. Therefore, the
standard packages available for download from the Eclipse website include dozens of
plug-ins.

1-5. Getting to “Hello, World”


Problem
You’ve installed Java SE 17 and the Eclipse IDE. Now you want to run a simple Java
program to verify that your installation is working properly.

Solution
Begin by opening the Eclipse IDE. You may see some projects in the left pane if you’ve
already been working on projects within the IDE.

12
Chapter 1 Getting Started with Java 17

Go to the File menu and select New ➤ Java Project, as shown in Figure 1-9.

Figure 1-9. Selecting Java project

The dialog is shown in Figure 1-10.

13
Chapter 1 Getting Started with Java 17

Figure 1-10. Creating a new Java project

Name your project java17Recipes. Enter the project name in the text box at the top
of the dialog, as shown in Figure 1-10.
In the JRE section, select the installed JDK (i.e., the JavaSE-17 that you just
configured). Press Finish to complete the wizard and create a skeleton project.

Tip Java is case-sensitive. Moreover, by convention, project names should start


with a lowercase letter.

Now, create a new package. Go to the File menu and select New ➤ Package, as
shown in Figure 1-11.

14
Chapter 1 Getting Started with Java 17

Figure 1-11. Creating a new package in Eclipse IDE

Name the package org.java17recipes.chapter01.recipe01_05 as shown in Figure 1-12.

Figure 1-12. Naming the package in Eclipse IDE

Tip By convention, package names usually start with a lowercase letter.

Next, create a new class. Go to the File menu, select New ➤ Class, and name the class
HelloWorld, as shown in Figure 1-13.

15
Chapter 1 Getting Started with Java 17

Figure 1-13. Creating and naming a new class in Eclipse IDE

16
Chapter 1 Getting Started with Java 17

Tip You can create package and class in the same configuration window by
simply creating a new class and typing package and class name in the Name field.
Moreover, by convention, class names usually start with an uppercase letter.

Make sure that you enter the project name, the package name, and the class
name exactly as we provide them here because the code to follow depends on your
doing so. Make sure the project name is java17Recipes. Make sure the package is
org.java17recipes.chapter01.recipe01_05. Make sure the class is HelloWorld.
Next, you should look at a Java source file. Skeleton code is generated for you, and
your Eclipse IDE window should resemble the one shown in Figure 1-14.

Figure 1-14. Viewing the skeleton code generated by Eclipse

Place your cursor anywhere in the source code pane. Press Ctrl+A to select all the
skeleton code. Then press Delete to get rid of it. Replace the deleted code with that from
Listing 1-2. Then, create another class, name it HelloMessage, and copy the code from
Listing 1-3.
You can find the code in Listing 1-2 and Listing 1-3 as part of our example download
for the book. There are two files named HelloMessage.java and HelloWorld.java, which
reside in a Java package named org.java17recipes.chapter01.recipe01_05. Note that
all recipe solutions of substance throughout this book are in that example download.
The class is named HelloWorld, and it initiates the program.

Listing 1-2. A “Hello, World” Example

package org.java17recipes.chapter01.recipe01_05;
public class HelloWorld {
    /* The main method begins in this class */
    public static void main(String[] args) {

17
Chapter 1 Getting Started with Java 17

        HelloMessage hm;
        hm = new HelloMessage();

        System.out.println(hm.getMessage());

        hm.setMessage("Hello, World");

        System.out.println(hm.getMessage());
    }
}

The second class, HelloMessage, is a container class that holds a string-based


message.

Listing 1-3. A “Message” Example

package org.java17recipes.chapter01.recipe01_05;
public class HelloMessage {
    private String message = "";

    public HelloMessage() {
        this.message = "Default Message";
    }

    public void setMessage (String m) {


        this.message = m;
    }

    public String getMessage () {


        //it changes the message to uppercase
        return message.toUpperCase();
    }
}

Make sure you have pasted (or typed) the code. Compile and run the program.
Right-­click in the project and select Run As ➤ Java Application, as shown in Figure 1-15.

18
Chapter 1 Getting Started with Java 17

Figure 1-15. Running a project in Eclipse IDE

Now you should see the following output.

DEFAULT MESSAGE
HELLO, WORLD

This output appears in a new view named Console, which Eclipse opens at the
bottom of the IDE window, as shown in Figure 1-16.

Figure 1-16. Console view in Eclipse IDE

19
Chapter 1 Getting Started with Java 17

How It Works
You can run almost all the solutions in this chapter using the same general technique
shown in this recipe. For that reason, we show the step-by-step screenshots this
one time.

Packages
The solution example begins by creating a Java package.

package org.java17recipes.chapter01.recipe01_05;

Packages are a way of grouping related classes together into a shared namespace.
The idea is to achieve universal uniqueness by working your way down your
organization’s domain name in reverse order. It is also customary to write package
names in all lowercase.
Eclipse creates a directory structure to imitate your package path. In this case,
Eclipse created the following directory path.

C:\eclipse-workspace\java17Recipes\src\org\java17recipes\chapter01\
recipe01_05

The following are some things to notice about this path.

• The front part is C:\eclipse-workspace. Eclipse creates all projects


under a workspace directory that you can change. Developers specify
different paths.

• Next is the first occurrence of java17Recipes. This corresponds to


the project name (see Figure 1-10).

• Any source files you create go into the src directory. Eclipse creates
other directories at this level. For example, Eclipse creates a bin
directory, and then underneath it is a classes subdirectory to hold
your compiled class files.

• The directories mirroring the package path that you specify are
last, in this case, org\java17recipes\chapter01\recipe01_05. An
identical structure is created under the bin\classes directory when
you compile your code. Note that if using another IDE, you may see
differences in the directories that are created.

20
Chapter 1 Getting Started with Java 17

You need to explicitly create a package. Organization and a judiciously chosen


naming convention are important when developing any significant application.

JavaBeans-style Classes
Next in the solution example is a class definition following the JavaBeans pattern.
The definition of HelloMessage follows a pattern that you often encounter in Java
programming, and we include it for that reason. The class is simple, capable of holding a
single string field named message.
Three methods are defined in the class.

• HelloMessage(). This method, also known as the constructor, is


named the same as the class. In this case, it takes no arguments.
It’s automatically invoked whenever you create a new object of the
class. Note that this is known as a no-arg or no-argument constructor
because it is typed out within the class and takes no arguments. If
you do not supply a constructor, the JVM supply a default constructor
(also takes no arguments) automatically.

• setMessage(String). This accessor method begins with the word


set. It takes one parameter. It specifies the message to be returned by
the corresponding get method.

• getMessage(). This accessor method returns the currently defined


message. In this example, we chose to make the message uppercase.

Note Accessor methods are used in JavaBeans classes to access any privately
declared class members. In this case, the private variable identified as message
can be accessed using these methods. Accessor methods are more commonly
referred to as getters and setters.

Methods beginning with set and get are the setter and getter methods. The IDE
generates these methods. The message variable is private to the class, which means you
have no direct access to message from outside the class.
You see the this keyword used in the class. It is a special keyword in Java that
references the current object. Its use is redundant but would be needed if any of the
methods happened to create variables of their own that were also named message: the

21
Chapter 1 Getting Started with Java 17

setter is mandatory due to the parameter name. It is common practice to use the this
keyword to reference the class members from within the getter and setter methods,
mostly for the latter.
It is common in Java to mediate access to class variables through setter and getter
methods like in our example. Those methods represent a contract of sorts with other
classes and your main program: public methods let the class state to be read or written,
but the external code is unaware of the mapping. Their benefit is that you can change
the storage implementation of HelloMessage however you like. It has its fields and state
information saved and restored independently from the type of storage. The other code
that depends on HelloMessage continues to work properly so long as you maintain the
external behavior of setMessage() and getMessage().

The Main Program


When you execute the currently selected class, Eclipse compiles the code to a set
of binary files and then transfers control to the main() method. Eclipse can also be
configured to recompile on save, which would then cause the transfer of control to the
main() method. That method, in turn, does the following.

1. Executes HelloMessage to create a variable named hm that can


hold an instance of the HelloMessage class. The hm variable is null
at this point.

2. Invokes new HelloMessage() to create an object of the class


by that name. The no-­argument constructor is executed, and
"Default Message" is now set as the greeting text. The new object
is now stored in the hm variable.

3. Makes a call to System.out.println() to show that the object’s


no-argument constructor has indeed executed as expected. The
getter changes to uppercase the text and returns the value. The
"DEFAULT MESSAGE" greeting is displayed in the Console pane.

4. Sets the message to be the traditional "Hello, World" text.

5. Makes another call to System.out.println() to output the new


message that was just set. Now you see the greeting "HELLO,
WORLD" added to the Console pane has become uppercase.

22
Chapter 1 Getting Started with Java 17

The pattern in the solution is common in Java programming. The main() method
is where execution begins. Variables are defined, and objects are created using the new
operator. Object variables are often set and retrieved using setter and getter methods.

1-6. Configuring the CLASSPATH


Problem
You want to execute a Java program or include an external Java library in the application
you are executing.

Solution
Set the CLASSPATH variable equal to the directory location of the user-defined Java classes
or Java Archive (JAR) files you need to have access to to execute your application. Let’s
say that you have a directory named JAVA_DEV located at the root of your OS drive, and
all the files your applications need to access are located in this directory. If this is the
case, you would execute a command such as the following.

set CLASSPATH=C:\JAVA_DEV\some-jar.jar

Use the following in Unix and Linux systems.

export CLASSPATH=/JAVA_DEV/some-jar.jar

Alternately, the javac command provides an option for specifying the location of
resources to be loaded for an application. On all platforms, setting the CLASSPATH using
this technique can be done via the -classpath option as follows.

javac –classpath /JAVA_DEV/some-jar.jar...

Of course, the file path uses the backslash (\) on Microsoft Windows machines.

Note The javac –cp option may be used, rather than specifying the
-classpath option.

23
Chapter 1 Getting Started with Java 17

How It Works
Java implements the concept of a classpath. This is a directory search path that you can
specify system-wide using the CLASSPATH environment variable. You can also specify the
classpath for a specific invocation of the JVM via the java command’s -classpath option.
When executing Java programs, the JVM finds and loads classes as needed using the
following search order.

1. The classes that are fundamental to the Java platform and are
contained in the Java installation directory

2. Any packages or JAR files that are located within the extension
directory of the JDK

3. Packages, classes, JAR files, and libraries that are loaded


somewhere on the specified classpath

You may need to access more than one directory or JAR file for an application. This
could be the case if your dependencies are located in more than one location. To do so,
simply use the delimiter for your operating system (a ; for Windows and a : for Unix OS)
as a separator between the locations specified by the CLASSPATH variable. The following
is an example of specifying multiple JAR files in the CLASSPATH environment variable on
Unix and Linux systems.

export CLASSPATH=/JAVA_DEV/some-jar.jar:/JAVA_LIB/myjar.jar

Alternatively, you can specify the classpath via a command-line option.

javac –classpath /JAVA_DEV/some-jar.jar:/JAVA_LIB/myjar.jar...

When loading the resources for a Java application, the JVM loads all the classes
and packages specified in the first location, followed by the second, and so on. This is
important because the order of loading may make a difference in some instances to
avoid interfering with one another.

Note JAR files package applications and Java libraries into a distributable
format. If you have not packaged your application in that manner, you may simply
specify the directory or directories in which your .class files reside.

24
Chapter 1 Getting Started with Java 17

Sometimes you want to include all JAR files within a specified directory. Do that
by specifying the wildcard character (*) after the directory containing the files. The
following is an example.

javac –classpath /JAVA_DEV/*:/JAVA_LIB/myjar.jar...

Specifying a wildcard tells the JVM that it should only load JAR files. It does not load
class files located in a directory specified with the wildcard character. You need to specify
a separate path entry for the same directory if you also want the class files. The following
is an example.

javac –classpath /JAVA_DEV/*:/JAVA_DEV

Subdirectories within the classpath are not searched. To load files contained within
subdirectories, those subdirectories and/or files must be explicitly listed in the classpath.
However, Java packages that are equivalent to the subdirectory structure are loaded.
Therefore, any Java classes that reside within a Java package that is equivalent to the
subdirectory structure are loaded.

Note It is a good idea to organize your code; it is also good to organize where
you place your code on the computer. A good practice is to place all your Java
projects within the same directory; it can become your workspace. Place all the
Java libraries that are contained in JAR files into the same directory for easier
management. You can also use tools like Maven and Gradle to organize your
project.

1-7. Organizing Code with Packages


Problem
Your application consists of Java classes, interfaces, and other types. You want to
organize these source files to make them easier to maintain and avoid potential
class-­naming conflicts.

25
Chapter 1 Getting Started with Java 17

Solution
Create Java packages and place source files within them. Java packages can organize
logical groups of source files within an application. Packages can help organize code,
reduce naming conflicts among different classes and other Java-type files, and provide
access control. To create a package, simply create a directory within the root of your
application source folder and name it. Packages are usually nested within each other and
conform to a standard naming convention. For this recipe, assume that the organization
is named JavaBook and makes widgets. To organize all the code for the widget
application, create a group of nested packages conforming to the following directory
structure.

/org/javabook

Any source files placed within a package must contain the package statement as the
first line in the source. The package statement lists the name of the package in which
the source file is contained. For instance, suppose that the main class for the widget
application is named JavaBookWidgets.java. To place this class into a package named
org.javabook, physically move the source file into a directory named javabook, which
resides within the org directory, which resides within the root of the source folder for the
application. The directory structure should look like the following.

/org/javabook/JavaBookWidgets.java

The source for JavaBookWidgets.java is as follows.

package org.javabook;
/**
* The main class for the JavaBook Widgets application.
* @author
*/
public class JavaBookWidgets {
    public static void main(String[] args){
        System.out println("Welcome to my app!");
    }
}

26
Chapter 1 Getting Started with Java 17

The first line in the source contains the package statement, which lists the name of
the package that the source file is located within. The entire package path is listed in the
statement, and dots separate the names in the path.

Note A package statement must be the first statement listed within the Java
source. However, a comment or JavaDoc comment may be written before the
package statement.

An application can consist of any number of packages. If the widget application


contains a few classes representing widget objects, they could be placed within the
org.javabook.widget package. The application may have interfaces that interact with
the widget objects. In this case, a package named org.javabook.interfaces may also
contain any such interfaces.

How It Works
Java packages are useful for organizing source files, controlling access to different
classes, and ensuring that there are no naming conflicts. Packages are represented by
a series of physical directories on a file system, and they can contain any number of
Java source files. Each source file must contain a package statement before any other
statements in the file. This package statement lists the name of the package in which the
source file resides. The source included the following package statement in the solution
to this recipe.

package org.javabook;

This package statement indicates that the source file resides within a directory
named javabook, which resides within a directory named org. Package naming
conventions can vary by company or organization. However, words must be in all
lowercase so that they do not conflict with any Java class file names. Many companies
or organizations use the reverse of their domain name for package naming. However,
underscores should be used if a domain name includes hyphens.

27
Chapter 1 Getting Started with Java 17

Note When a class resides within a Java package, it is no longer referenced by


only the class name; instead, the package name is prepended to the class name,
known as the fully qualified name. For instance, the class that resides within the
file JavaBookWidgets.java is contained within the org.javabook package.
The class is referenced using org.javabook.JavaBookWidgets, not simply
JavaBookWidgets. An identically named class can reside within a different
package (e.g., org.java17recipes.JavaBookWidgets).

Packages are very useful for establishing levels of security as well as organization. By
default, different classes that reside within the same package have access to each other.
If a source file resides within a package different from another file it needs to use, an
import statement must be declared at the top of the source file (underneath the package
statement) to import that other file. And the source file must declare the class/interface/
enum element type as public; otherwise, the fully qualified package.class name must
be used within the code. Classes may be imported separately, as demonstrated in the
following import statement.

import org.javabook.JavaBookWidgets;

However, it is often likely that all classes and type files that reside within a package
need to be used. A single import statement utilizing a wildcard character (*) can import
all files within a named package as follows.

import org.javabook.*;

Although it is possible to import all files, it is not recommended unless necessary. It


is considered a poor programming practice to include many import statements that use
the wildcard. Instead, classes and type files should be imported individually.
Organizing classes within packages can prove to be very helpful. Suppose that the
widget application described in the solution to this recipe includes different Java classes
for each widget object. Each widget class could be grouped into a single package named
org.javabook.widgets. Similarly, each of the widgets could extend some Java type or
interface. All such interfaces could be organized into a package named org.javabook.
interfaces.

28
Chapter 1 Getting Started with Java 17

Any substantial Java application includes packages. Any Java library or application
programming interface (API) that you use includes packages. When you import classes
or types from those libraries and APIs, you are really importing packages.

1-8. Declaring Variables and Access Modifiers


Problem
You want to create some variables and manipulate data within your program.
Furthermore, you wish to make some of the variables available to only the current class,
whereas others should be available to all classes or only the other classes within the
current package.

Solution
Java implements eight primitive data types. There is also special support for the String
class type. Listing 1-4 shows an example declaration of each. Draw from the example to
declare the variables needed in your own application.

Listing 1-4. Declarations for Primitive and String Types

package org.java17recipes.chapter01.recipe01_08;
public class DeclarationsExample {
    public static void main (String[] args) {
        boolean booleanVal = true;  /* Default is false */

        char charval = 'G';         /* Unicode UTF-16 */


        charval = '\u0490';         /* Ukrainian letter Ghe(Ґ) */

        byte byteval;       /*  8 bits, -127 to 127 */


        short shortval;     /* 16 bits, -32,768 to 32,768 */
        int intval;         /* 32 bits, -2147483648 to 2147483647 */
        long longval;       /* 64 bits, -(2^64) to 2^64 - 1 */

        float   floatval = 10.123456F;        /* 32-bit IEEE 754 */


        double doubleval = 10.12345678987654; /* 64-bit IEEE 754 */

29
Chapter 1 Getting Started with Java 17

        String message = "Darken the corner where you are!";


        message = message.replace("Darken", "Brighten");
    }
}

Note If you’re curious about the Ukrainian letter in Listing 1-4, it is the Cyrillic
letter Ghe with upturn. You can read about its history at http://en.wikipedia
.org/wiki/Ghe_with_upturn. You can find its code point value in the chart
at www.unicode.org/charts/PDF/U0400.pdf. And the URL www.unicode
.org/charts/ is a good place to start whenever you need to find the code point
corresponding to a given character.

Variables are subject to the concept of visibility. Those created in Listing 1-5 are
visible from the main() method after being created, and they are deallocated when
the main() method ends. They have no “life” beyond the main() method and are not
accessible from outside of main().
Variables created at the class level are a different story. Such variables can be termed
as class fields or class members, as in fields or members of the class. The use of a member
can be restricted to objects of the class in which it is declared or to the package in which
it is declared, or it can be accessed from any class in any package.

Listing 1-5. Visibility and the Concept of Fields

package org.java17recipes.chapter01.recipe01_08;

class TestClass {
    private long visibleOnlyInThisClass;
    double visibleFromEntirePackage;
    void setLong (long val) {
        visibleOnlyInThisClass = val;
    }
    long getLong () {
       return visibleOnlyInThisClass;
    }
}

30
Chapter 1 Getting Started with Java 17

public class VisibilityExample {


    public static void main(String[] args) {
        TestClass tc = new TestClass();
        tc.setLong(32768);
        tc.visibleFromEntirePackage = 3.1415926535;
        System.out.println(tc.getLong());
        System.out.println(tc.visibleFromEntirePackage);
    }
}

The following is the output.

32768
3.1415926535

Members are typically bound to an object of a class. Each class object contains an
instance of each member in the class. However, you can also define static fields that
occur only once and with a single value that is shared by all instances of the given class.
Listing 1-6 illustrates the difference.

Listing 1-6. Static Fields

package org.java17recipes.chapter01.recipe01_08;
class StaticDemo {
    public static boolean oneValueForAllObjects = false;
}
public class StaticFieldsExample {
    public static void main (String[] args) {
        StaticDemo sd1 = new StaticDemo();
        StaticDemo sd2 = new StaticDemo();
        System.out.println(sd1.oneValueForAllObjects);
        System.out.println(sd2.oneValueForAllObjects);
        sd1.oneValueForAllObjects = true;
        System.out.println(sd1.oneValueForAllObjects);
        System.out.println(sd2.oneValueForAllObjects);
    }
}

31
Chapter 1 Getting Started with Java 17

Listing 1-6 produces the following output.

false
false
true
true

The field oneValueForAllObjects was set to true only for the class instance named
sd1. Yet it is true, for instance, sd2 also. This is because of the keyword static used in
declaring that field. Static fields occur one time for all objects of their class. Moreover,
the compiler in the IDE raises a warning about that. In fact, it should be used through
StaticDemo.oneValueForAllObjects.

How It Works
Listing 1-6 illustrates the basic format of a variable declaration.

type variable;

It’s common to initialize variables when declaring them, so you often see the
following.

type variable = initialValue;

Modifiers can precede field declarations. The following is an example.

public static variable = initialValue;


protected variable;
private variable;

It’s common to put the visibility modifier—public, protected, or private—first,


but you are free to list the modifiers in any order you like. By default, if no modifier has
been specified, the class or member is made package-private, meaning that only other
classes within the package have access to the member.

Note If a class member is specified as protected, then it is also package-private,


except that any subclass of its class in another package also has access.

32
Chapter 1 Getting Started with Java 17

The String type is special in Java. It’s a class type, but syntactically you can treat it
as a primitive type. Java automatically creates a String object whenever you enclose
a string of characters within double quotes ("..."). You aren’t required to invoke a
constructor or specify the new keyword. Yet String is a class, and there are methods in
that class that are available to you. One such method is the replace() method shown at
the end of Listing 1-4.
Strings are composed of characters. Java’s char type is a two-byte construct for
storing a single character in Unicode’s UTF-16 encoding. You can generate literals of the
char type in two ways.

• If a character is easy to type, enclose it within single quotes (e.g., 'G').

• Otherwise, specify the four-digit UTF-16 code point value prefaced by


\u (e.g., '\u0490').

Some Unicode code points require five digits. These cannot be represented in
a single char value. See Chapter 12 if you need more information on Unicode and
internationalization.
Avoid using any of the primitive types for monetary values. Especially avoid either
of the floating-point types for that purpose. Refer instead to Chapter 12 and its recipe on
using the Java Money API to calculate monetary amounts (Recipe 12-10). BigDecimal
can also be useful anytime you need accurate, fixed-decimal arithmetic.
If you are new to Java, you may be unfamiliar with the String[] array notation, as
demonstrated in the examples. Please see Chapter 7 for more information on arrays. It
covers enumerations, arrays, and generic data types. Also in that chapter are examples
showing how to write iterative code to work with collections of values such as an array.

1-9. Converting to and from a String


Problem
You have a value stored within a primitive data type, and you want to represent that
value as a human-readable string. Or, you want to go in the other direction by converting
a human-readable string into a primitive data type.

33
Chapter 1 Getting Started with Java 17

Solution
Follow one of the patterns from Listing 1-7. The listing shows the conversion from a
string to a double-precision floating-point value and shows two methods for getting back
to a string again.

Listing 1-7. General Pattern for String Conversions

package org.java17recipes.chapter01.recipe01_09;

public class StringConversion {

    public static void main (String[] args) {


        double pi;
        String strval;

        pi = Double.parseDouble("3.14");
        System.out.println(strval = String.valueOf(pi));
        System.out.println(Double.toString(pi));
    }
}
The output is 3.14.

How It Works
The solution illustrates some conversion patterns that work for all the primitive
types. First, there is converting a floating-point number from its human-readable
representation into the IEEE 754 format used by the Java language for floating-point
arithmetic.

pi = Double.parseDouble("3.14");

Notice the pattern. You can replace Double with Float or Long, or whatever other
type your target data type is. Each primitive type has a corresponding wrapper class by
the same name but the initial letter is uppercase. The primitive type here is a double, and
the corresponding wrapper is Double. The wrapper classes implement helper methods
such as Double.parseDouble(), Long.parseLong(), Boolean.parseBoolean(), and so
forth. These parse methods convert human-readable representations into values of the
respective types.

34
Chapter 1 Getting Started with Java 17

Going the other way, it is often easiest to invoke String.valueOf(). The String
class implements this method, which is overloaded for each of the primitive data types.
Alternatively, the wrapper classes also implement toString() methods that you can
invoke to convert values of the underlying type into their human-readable forms. It’s
your preference as to which approach to take.
Conversions targeting the numeric types require some exception handling to be
practical. You generally need to gracefully accommodate a case in which a character-­
string value is expected to be a valid numeric representation, but it’s not. Chapter 9
covers exception handling in detail, and the upcoming Recipe 1-10 provides a simple
example to get you started.

Caution Literals for the Boolean type are "true" and "false". They
are case-sensitive. Any value other than these two is silently interpreted as
false when converting from a string using the Boolean parseBoolean()
conversion method.

1-10. Passing Arguments via Command-Line


Execution
Problem
You want to pass values into a Java application invoked via the java utility
command line.

Solution
Run the application using the java utility, and specify the arguments that you want to
pass into it after the application name. If you’re passing more than one argument, each
should be separated by a space. For example, suppose you want to pass the arguments to
the class created in Listing 1-8.

35
Chapter 1 Getting Started with Java 17

Listing 1-8. Example of Accessing Command-Line Arguments

public class PassingArguments {


    public static void main(String[] args){
        if(args.length > 0){
            System.out.println("Arguments that were passed to the program: ");
            for (String arg:args){
                System.out.println(arg);
            }
        } else {
            System.out.println("No arguments passed to the program.");
        }
    }
}

First, make sure to compile the program so that you have a .class file to execute.
You can do that via the javac utility at the command line or terminal.
Therefore, open a command prompt or a terminal window for compiling and
executing your Java class. Now issue a java command to execute the class and type
some arguments on the command line following the class name. The following example
passes two arguments.

java PassingArguments Luciano Manelli

You should see the following output.

Luciano
Manelli

Spaces separate arguments. Enclose strings in double quotes when you want to pass
an argument containing spaces or other special characters. The following is an example.

C:\Users\lucky\OneDrive\Desktop>java PassingArguments "Luciano Manelli"

The output now shows just one argument.

Arguments that were passed to the program:


Luciano Manelli

The double quotes translate the "Luciano Manelli" string into a single argument.

36
Chapter 1 Getting Started with Java 17

How It Works
All Java classes that are executable from the command line or terminal contain a main()
method. If you look at the signature for the main() method, you can see that it accepts
a String[] argument. In other words, you can pass an array of String objects into the
main() method. Command-line interpreters such as the Windows command prompt
and the various Linux and Unix shells build an array of strings out of your command-line
arguments and pass that array to the main() method on your behalf.
The main() method in the example displays each passed argument. First, the length
of the array named args is tested to see whether it is greater than zero. If it is, the method
loop through each of the arguments in the array executes a for loop, displaying each
argument along the way. If there are no arguments passed, the length of the args array
is zero, and a message indicating this is printed; otherwise, you see a different message
followed by a list of arguments.
Command-line interpreters recognize spaces and sometimes other characters as
delimiters. It’s generally safe to pass numeric values as arguments delimited by spaces
without bothering to enclose each value within quotes. However, as shown in the final
solution example, you should get into the habit of enclosing character-string arguments
in double quotes. Do that to eliminate any ambiguity over where each argument begins
and ends.

Note Java sees all arguments as character strings. If you pass numeric values as
parameters, they enter Java as character strings in human-readable form. You can
convert them into their appropriate numeric types using the conversion methods
shown in Recipe 1-9.

1-11. Accepting Input from the Keyboard


Problem
You are interested in writing a command-line or terminal application that accept user
input from the keyboard.

37
Chapter 1 Getting Started with Java 17

Solution
Use the java.io.BufferedReader and java.io.InputStreamReader classes to read
keyboard entry and store it into local variables. Listing 1-9 shows a program that keeps
prompting for input until you enter some characters representing a valid value of type long.

Listing 1-9. Keyboard Input and Exception Handling

package org.java17recipes.chapter01.recipe01_11;
import java.io.*;
public class AcceptingInput {
    public static void main(String[] args){
        BufferedReader readIn = new BufferedReader(
                new InputStreamReader(System.in)
        );
        String numberAsString = "";
        long numberAsLong = 0;
        boolean numberIsValid = false;
        do {
            /* Ask the user for a number. */
            System.out.println("Please enter a number: ");
            try {
                numberAsString = readIn.readLine();
                System.out.println("You entered " + numberAsString);
            } catch (IOException ex){
                System.out.println(ex);
            }
            /* Convert the number into binary form. */
            try {
                numberAsLong = Long.parseLong(numberAsString);
                numberIsValid = true;
            } catch (NumberFormatException nfe) {
                System.out.println ("Not a number!");
            }
        } while (numberIsValid == false);
    }
}
38
Chapter 1 Getting Started with Java 17

The following is an example run of this program.

Please enter a number:


No
You entered No
Not a number!
Please enter a number:
Yes
You entered Yes
Not a number!
Please enter a number:
75
You entered 75

The first two inputs did not represent valid values in the long data type. The third
value was valid, and the run ended.

How It Works
Quite often, our applications need to accept user input of some kind. Granted, most
applications are not used from the command line or terminal nowadays, but having
the ability to create an application that reads input from the command line or terminal
helps lay a good foundation and may be useful in some applications or scripts. Terminal
input can also be useful in developing administrative applications that you or a system
administrator may use.
Two helper classes were used in the solution to this recipe. They are
java.io.BufferedReader and java.io.InputStreamReader. The early portion
of the code that uses those classes is especially important.

BufferedReader readIn = new BufferedReader(


        new InputStreamReader(System.in)
);

The innermost object in this statement is System.in. It represents the keyboard. You
do not need to declare System.in. Java’s runtime environment creates the object for you.
It is simply available to be used.

39
Chapter 1 Getting Started with Java 17

System.in provides access to raw bytes of data from the input device, which is the
keyboard in our example. The InputStreamReader class’s job is to take those bytes and
convert them into characters in your current character set. System.in is passed to the
InputStreamReader() constructor to create an InputStreamReader object.
InputStreamReader knows about characters but not about lines. The
BufferedReader class’s job is to detect line breaks in the input stream and enable you
to conveniently read a line at a time. BufferedReader also aids efficiency by allowing
physical reads from the input device to be done in different-size chunks than when your
application consumes the data. This aspect can make a difference when the input stream
is a large file rather than the keyboard.
The following shows how the program in Listing 1-9 uses an instance (named
readIn) of the BufferedReader class to read a line of input from the keyboard.

numberAsString = readIn.readLine();

Executing this statement triggers the following sequence.

1. System.in returns a sequence of bytes.

2. InputStreamReader converts those bytes into characters.

3. BufferedReader breaks the character stream into lines of input.

4. readLine() returns one line of input to the application.

I/O calls must be wrapped in try-catch blocks. These blocks catch any exceptions
that may occur. The try part in the example fails if a conversion is unsuccessful. A failure
prevents the numberIsValid flag from being set to true, which causes the do loop to
make another iteration so that the user can try again at entering a valid value. To learn
more about catching exceptions, please see Chapter 9.
The following statement at the top of Listing 1-9 deserves some attention.

import java.io.*;

This statement makes available the classes and methods defined in the java.io
package. These include InputStreamReader and BufferedReader. Also included is the
IOException class used in the first try-catch block. NumberFormatException (used in
the second try-catch block) belongs to the java.lang package.

40
Chapter 1 Getting Started with Java 17

1-12. Documenting Your Code


Problem
You want to document some of your Java classes to assist in future maintenance.

Solution
Use JavaDoc to place comments before any package, class, method, or field that you
want to document. To begin such a comment, write the characters /**. Then begin each
subsequent line with an asterisk (*). Lastly, close the comment with the characters */ on
a line by themselves at the end. Listing 1-10 shows a method commented with JavaDoc.

Listing 1-10. Comments Made in JavaDoc Form

package org.java17recipes.chapter01.recipe01_12;
import java.math.BigInteger;
public class JavadocExample {
    /**
     * Accepts an unlimited number of values and
     * returns the sum.
     *
     * @param nums Must be an array of BigInteger values.
     * @return Sum of all numbers in the array.
     */
     public static BigInteger addNumbers(BigInteger[] nums) {
         BigInteger result = new BigInteger("0");
         for (BigInteger num:nums){
             result = result.add(num);
         }
         return result;
     }
    /**
     * Test the addNumbers method.
     * @param args not used
     */

41
Chapter 1 Getting Started with Java 17

     public static void main (String[] args) {


         BigInteger[] someValues = {BigInteger.TEN, BigInteger.ONE};
         System.out.println(addNumbers(someValues));
     }
}

Comments can be added to the beginning of the package, classes, and fields in the
same way. The comments are helpful to you and other programmers maintaining the
code, and their specific format enables the easy generation of an HTML reference to
your code.
Generate the HTML reference by invoking the JavaDoc tool. This command-line
tool parses a named Java source file and formulates HTML documentation based on the
defined class elements and JavaDoc comments. The following is an example.

javadoc JavadocExample.java

This command produces several HTML files containing the documentation for the
package, class, methods, and fields. If no JavaDoc comments exist within the source,
some default documentation is still produced. To view the documentation, load the
following file into your browser.

index.html

The file is in the same directory as the class or package you are documenting. There
is also an index-all.html file giving a strict alphabetical listing of documented entities.
Keep in mind that the same rules apply when using the JavaDoc tool as when using
javac. You must reside within the same directory as the source file or prepend the file’s
name with the path to where the file is located.
The output is shown in Figure 1-17.

42
Chapter 1 Getting Started with Java 17

Figure 1-17. JavaDoc example in Eclipse IDE

How It Works
Generating documentation for applications from scratch can be quite tedious.
Maintaining documentation can be even more troublesome. The JDK comes packaged
with an extensive system for documentation known as JavaDoc. Placing special
comments throughout your code source and running a simple command-line tool
makes it easy to generate useful documentation and keep it current. Even if some of the
classes, methods, or fields in an application are not specifically commented on by the
JavaDoc utility, default documentation is produced for these elements.

Formatting the Documentation


To create a JavaDoc comment, begin with the characters /**. Although optional since
Java 1.4, a common practice is to include an asterisk as the first character of every
subsequent line within the comment. Another good practice is to indent the comment
to align with the code that is being documented. Lastly, close the comment with the
characters */.

43
Chapter 1 Getting Started with Java 17

JavaDoc comments should begin with a short description of the class or method.
Fields are rarely commented using JavaDoc unless they are declared public static
final (constants), in which case it is a good idea to supply a comment. A comment
can be several lines long and can even contain more than one paragraph. If you want
to break comments into paragraphs, then separate those paragraphs using the <p> tag.
Comments can include several tags that indicate various details regarding the method
or class being commented. JavaDoc tags begin with an ampersand (@), and some of the
common tags are as follows.

@param: Name and description of a parameter


@return: What is returned from the method
@see: Reference to another piece of code

You may also include inline links within JavaDoc to reference URLs. To include an
inline link, use the tag {@link My Link}, where link is the actual URL that you want
to point at, and My Link is the text that you want to appear. Many other tags can be
used within JavaDoc comments, including {@literal}, {@code}, {@value org}, and
many others.

Executing the Tool


The JavaDoc tool can be run against entire packages or sources. Simply pass a package
name to the JavaDoc tool rather than individual source file names. For instance, if an
application includes a package named org.luciano.beans, all source files within that
package can be documented by running the tool, as follows.

javadoc org.luciano.beans

By default, the JavaDoc tool generates HTML and places it into the same package
as documented code. That result can become a cluttered nightmare if you like to have
source files separate from the documentation. Instead, you can set up a destination for
the generated documentation by passing the –d flag to the JavaDoc tool.

44
Another Random Document on
Scribd Without Any Related Topics
Angoulême, Périgueux, Limoges, Clermont même, et jusques à la
ville de Bourges, capitale du royaume d’Aquitaine.

CHAPITRE IX.

Comment, après que la France eut gémi trente ans environ sous l’oppression des
Païens, Hastings se rendant par mer à Rome pour la soumettre à la domination
de Bier, fut jeté par une tempête auprès de Luna, ville d’Italie.

A la suite de toutes ces calamités qui furent pour les Gaules une
sorte d’expiation qu’elles eurent à supporter durant près de trente
années, Hastings, desirant élever son seigneur à une plus haute
fortune commença avec une troupe de complices à viser plus
sérieusement au diadême impérial. A la fin, après avoir tenu conseil,
ces hommes lancèrent leurs voiles à la mer, résolus d’aller attaquer à
l’improviste la ville de Rome et de s’en rendre maîtres. Mais une
grande tempête [p. 18] s’étant élevée, ils furent poussés par le vent
vers la ville de Luna, qui était appelée de ce nom, à cause de sa
beauté. Les citoyens, étonnés de l’arrivée d’une telle flotte,
barricadèrent les portes de leur ville, fortifièrent leurs remparts et
s’encouragèrent les uns les autres à la résistance. Hastings, dès qu’il
fut informé de leurs hardis projets, crut qu’il avait devant lui la ville
de Rome, et se mit aussitôt à chercher avec le plus grand soin
comment il pourrait s’en rendre maître par artifice. Enfin, envoyant à
l’évêque et au comte de cette ville les ministres de sa perfidie, il leur
fit dire qu’il n’avait point abordé en ces lieux avec intention et que
son unique desir était de retourner dans sa patrie; qu’il ne voulait et
ne demandait que la paix, et que lui-même, accablé d’une maladie
mortelle, les faisait supplier humblement de vouloir bien le faire
chrétien. Ayant entendu ces paroles, l’évêque et le comte se livrèrent
aux transports de leur joie, conclurent la paix avec ce détestable
ennemi de toute paix, et le peuple normand fut admis à entrer dans
la ville, aussi bien que ses habitans.

CHAPITRE X.
Comment Hastings, croyant que la ville de Luna était Rome, et ne pouvant la
prendre de vive force, la prit par artifice et la détruisit.

ENFIN le scélérat Hastings fut transporté à 1’église; l’homme plein


de ruse fut arrosé des eaux sacrées du [p. 19] baptême et en sortit en
loup dévorant. Pour leur malheur, l’évêque et le comte le
présentèrent sur les fonts du baptême, et de là, après avoir été oint
du saint chrême, il fut rapporté à bras d’hommes sur son navire.
Ensuite, et au milieu du silence de la nuit, s’étant cuirassé, Hastings
se fait déposer dans un cercueil, et donne ordre à ses compagnons
de revêtir leurs cuirasses sous leurs tuniques. Aussitôt on entend de
grands gémissemens dans toute l’armée, sur le bruit que Hastings le
néophyte vient de mourir. Le rivage de la mer retentit des cris de
douleur que provoque la mort d’un tel chef. On le transporte alors
hors de son navire et on le conduit l’église. L’évêque se couvre de
ses vêtemens sacrés et se dispose à immoler la très-sainte hostie en
l’honneur du défunt. On chante les prières pour son ame, afin que
son corps chargé de crimes, voué à la perdition et déjà enfermé
dans le cercueil, puisse recevoir la sépulture. Mais voilà, Hastings
s’élance hors de son cercueil et tue de son glaive l’évêque et le
comte. Ensuite lui et les siens assouvissent à l’improviste sur le petit
peuple leurs fureurs de loups dévorans. La maison de Dieu devient le
théâtre des crimes commis par son fatal ennemi, les jeunes gens
sont massacrés, les vieillards égorgés, la ville dévastée, et les
remparts renversés jusque dans leurs fondemens.
[p. 20]

CHAPITRE XI.

Comment les Païens, ayant découvert que cette ville n’était pas Rome, se
divisèrent. — Bier voulant retourner en Danemarck, mourut dans la Frise.
— Hastings ayant fait la paix avec le roi Charles, reçut de lui la ville de Chartres,
à titre de solde, et y habita.

LA ruine de cette ville ainsi accomplie, les Païens ayant découvert


qu’ils ne s’étaient point emparés de Rome, craignirent de ne pouvoir
réussir dans de nouvelles entreprises (car la rapide renommée avait
déjà instruit les Romains de leurs œuvres profanes), et ayant tenu
conseil, ils résolurent de repartir. Bier, sous les drapeaux duquel se
commettaient ces dévastations et qui était le roi de ces armées,
ayant voulu retourner dans son pays, essuya un naufrage, eut
beaucoup de peine à se faire recevoir dans un port chez les Anglais,
et perdit par la tempête un grand nombre de ses vaisseaux. Il se
rendit dans la Frise, et y mourut.
2
Quant à Hastings, il alla trouver Charles , roi des Francs, lui
demanda la paix, l’obtint, et reçut en don la ville de Chartres, à titre
de solde. Par là la France respira un peu de tant d’horribles
désastres; la vengeance due à des crimes si énormes fut suspendue,
et l’on vit se manifester la miséricorde du Christ, qui avec le Père et
le Saint-Esprit gouverne le monde de toute éternité, dans sa
puissance ineffable.
[p. 21]

LIVRE SECOND.
DES FAITS ET GESTES DE ROLLON, PREMIER DUC DE NORMANDIE.

CHAPITRE PREMIER.

De la noblesse et valeur du père de Rollon, et comment les jeunes gens de la


Dacie, qui avaient été désignés par ordre du roi pour en être expulsés, se
rendirent auprès de Rollon et de Gurim son frère pour implorer leur secours
contre le roi.

UN grand nombre d’années s’étaient écoulées, à la suite de ces


événemens, et la France commençait à se reposer quelque peu de
ces bruyans désordres, lorsque le Danemarck agitant de nouveau
des tisons embrasés, en vertu de son droit d’expulsion, résolut,
conformément à ses antiques lois, de chasser de nouveau du sol
natal beaucoup de chevaliers, brillans de tout l’éclat de la jeunesse.
En ces jours vivait dans la Dacie un certain vieillard, le plus riche
de tous en toutes sortes de richesses, environné de toutes parts
d’une foule innombrable de chevaliers, qui jamais ne courba sa tête
devant aucun roi, et jamais ne mit ses mains dans les mains d’un
autre, quel qu’il fût, pour se recommander à lui et lui promettre ses
services. Cet homme, possédant presque en totalité le royaume de
Dacie, conquit en outre les territoires limitrophes de la Dacie [p. 22] et
de l’Alanie, et par sa force et sa puissance il subjugua les peuples de
ce pays, à la suite d’un grand nombre de combats. Il était le plus
distingué par sa valeur, parmi tous les Orientaux, et se montrait en
outre supérieur à eux par la réunion de toutes les vertus. Il mourut
et laissa après lui deux fils, vaillans dans les combats, habiles à la
guerre, beaux de corps, remplis de vigueur et de courage. L’aîné se
nommait Rollon et le plus jeune Gurim. Les jeunes gens désignés
pour être expulsés de leur pays allèrent trouver ces deux hommes,
et fléchissant le genou, baissant la tête, les suppliant avec humilité,
ils leur dirent d’une voix unanime: « Prêtez nous votre secours et
accordez-nous votre appui; nous demeurerons toujours sous votre
protection, et nous travaillerons incessamment pour votre service.
Notre roi veut nous expulser de la Dacie, et nous enlever
entièrement nos terres et nos bénéfices. » Alors les deux frères
répondirent à ceux qui venaient les supplier humblement, disant:
« Nous vous secourrons certainement, nous vous ferons demeurer
en Dacie à i’abri des menaces du roi, et nous vous ferons jouir en
paix et en sécurité de tout ce qui vous appartient. » Ceux-là ayant
entendu ces paroles, tombèrent aux pieds de Rollon et de Gurim, les
embrassèrent et s’en retournèrent aussitôt, se félicitant des réponses
de ces princes. Cependant la renommée répand un bruit véritable, et
le porte même aux oreilles du roi de Dacie, savoir que le duc très-
puissant, le père de Rollon et de Gurim, jouit enfin du suprême
repos. Alors le roi se souvenant de tous les maux que ce duc lui a
fait endurer, appelle [p. 23] auprès de lui tous les grands de son
Empire, et leur dit: « Vous n’ignorez point que le père de Rollon et
de Gurim est mort. J’attaquerai donc leur pays, je prendrai les villes
et les châteaux et les lieux les mieux fortifiés, je me vengerai des
actions du père sur les fils, et les écrasant je me réjouirai à satiété
de leurs maux. Je vous prie, vous et les vôtres, préparez-vous pour
accomplir cette entreprise. » Puis l’époque du départ ayant été
désignée, tous s’en retournèrent avec les leurs aux lieux d’où ils
étaient venus. Bientôt la jeunesse bouillante de la Dacie, remplie de
zèle et d’ardeur, prépare toutes les choses nécessaires pour cette
expédition. Les uns, appelant à leur aide l’art du forgeron, fabriquent
de légers boucliers et des javelots brillans. D’autres aiguisent avec
soin leurs dards, leurs épées et leurs haches. La nouvelle de ces faits
arrive inopinément aux oreilles de Rollon et de Gurim, et ils se
troublent en recevant ces premiers rapports. Convoquant, aussitôt
une nombreuse armée, ils s’entourent d’une foule de jeunes gens,
d’une multitude d’hommes de moyen âge, de vieillards et de ceux
qui étaient désignés pour être expulsés, et étendant la main ils
commandent le silence.
[p. 24]

CHAPITRE II.

Comment Rollon s’étant révolté contre le roi pendant cinq ans, le roi lui demande
et obtient la paix frauduleusement.

A peine les murmures de ce peuple en tumulte sont-ils apaisés,


Rollon s’élevant au dessus de tous et se plaçant sur un siége
convenable, commence à parler d’une bouche qui distille le miel:
« Vous en qui bouillonne l’ardeur de la jeunesse, qui brillez par tout
l’éclat de la plus haute valeur, c’est à vous que je m’adresse. Imitez
par votre activité vos vénérables pères, vos aïeux et ancêtres.
Rassemblez toutes vos forces, déployez toute votre vigueur, et ne
craignez point de ne pouvoir attaquer ces hommes avec des forces
égales aux leurs. Voici, le roi de ce royaume a le projet de triompher
de nous, d’envahir la monarchie soumise à notre domination, de
nous perdre et de vous perdre tous. Avant donc qu’il s’empare de la
terre que nous possédons par droit d’héritage, devançons-le en
allant occuper nous-mêmes la terre qu’il gouverne, et opposons-
nous à sa marche en ennemis déclarés. » Tous aussitôt, réjouis de
ces paroles, se réunissent en plusieurs armées, vont envahir les
terres du roi et les dévastent entièrement, portant de tous côtés les
feux de Vulcain. Le roi ayant appris ces nouvelles, marche au combat
contre Rollon et son frère Gurim, et après avoir combattu long-
temps, il tourne le dos et court se réfugier dans ses villes. Alors
Rollon ensevelit les [p. 25] morts de son armée et laisse sans
sépulture ceux de l’armée du roi. Durant tout le cours d’un lustre, la
guerre ayant continué entre le roi et Rollon, enfin le roi adressa à
Rollon des paroles de paix, mais qui cachaient une fraude: « II n’y a
rien entre toi et moi, si ce n’est à raison du voisinage. Permets, je te
prie, que la chose publique demeure en repos, en sorte qu’il me soit
donné de posséder tranquillement ce qui m’appartient de droit, ce
qui a appartenu à mon père, et à toi aussi ce qui t’appartient de
droit, ce qui a appartenu à ton père. Que la paix et la concorde
soient donc établies entre moi et toi par un traité inviolable. » Alors
Rollon et Gurim, leurs chevaliers et ceux qui avaient été désignés
pour être expulsés, approuvèrent fort cette paix. On détermina le
moment où la paix serait jurée des deux parts: chacun des deux
contractans se rendit à l’assemblée, et ayant échangé mutuellement
de riches présens, ils conclurent un traité d’amitié.

CHAPITRE III.

Comment le roi attaqua dans la nuit les villes de Rollon. — De la mort de Gurim
son frère, et de l’arrivée de Rollon dans l’île de Scanza avec six navires.

ENFIN le roi perfide après avoir médité en son cœur méchant la


fraude qu’il avait déjà conçue, assembla un jour son armée, et
marchant de nuit et envahissant le territoire des deux frères, il plaça
une embuscade non loin des murs de la ville et commença à [p. 26]
l’assiéger. Alors Rollon et son frère Gurim et ceux qui étaient avec
eux, s’élançant hors de la ville, poursuivirent le roi, qui tourna le dos
et feignit de prendre la fuite. Lorsque Rollon eut dépassé le lieu où
était placée une embuscade, une partie des hommes qui s’y étaient
cachés sortit aussitôt et se dirigea vers la ville. L’ayant trouvée
dégarnie de ses hommes d’armes, les gens du roi y mirent le feu et
enlevèrent de riches dépouilles; les autres cependant se mirent à la
poursuite de Rollon, qui chassait le roi devant lui avec toute la fureur
d’un ennemi. Or le roi voyant que la ville était embrasée, et que les
gens de l’embuscade avaient repris l’avantage, revint sur ses pas et
combattit contre Rollon. Un grand nombre d’hommes du parti de
Rollon furent massacrés, et Gurim son frère succomba dans la
bataille. Alors Rollon se voyant placé entre deux armées, dont l’une
feignait de s’enfuir, tandis que l’autre sortait de son embuscade,
voyant en outre son frère mort et se trouvant lui-même tout couvert
de blessures, s’enfuit, non sans peine, suivi seulement d’un petit
nombre d’hommes. Le roi assiégeant alors et prenant les villes,
soumit à son joug le peuple qui s’était révolté et murmurait encore
contre lui. Rollon ne pouvant demeurer en Dacie par crainte du roi,
dont il se méfiait, aborda avec six navires à l’île de Scanza. Alors la
Dacie, privée de son brave duc, de son patrice et de son vigoureux
défenseur, poussa de profonds gémissemens et se mit à répandre
des torrens de larmes.
[p. 27]

C H A P I T R E I V.

De l’invitation faite à Rollon en songe pour qu’il eût à se rendre en Angleterre, et


de sa victoire sur les Anglais.

TANDIS qu’il demeurait depuis longtemps déjà dans l’île de Scanza,


triste, agité des pensées pénibles qui tourmentaient son ame
ardente, et méditant de se venger de ses ennemis, un grand nombre
de ceux que la dureté du roi avait expulsés de la Dacie vinrent
auprès de Rollon. Ses membres étaient épuisé de fatigue, il avait
succombé au sommeil quand une fois il entendit retentir une voix
divine, qui lui dit: « Rollon, lève-toi promptement, hâte-toi de
traverser la mer avec tes navires et de te rendre en Angleterre. Là tu
apprendras que tu dois retourner sain et sauf dans ta patrie, et y
jouir à jamais et sans aucun trouble d’une douce paix. » Rollon ayant
raconté ce songe à un certain homme sage et serveur du Christ, cet
homme l’interpréta de la manière que voici: « Dans un temps à venir
qui s’approche, tu seras purifié par le très-saint baptême, tu
deviendras un très-digne serviteur du Christ, tu passeras de l’erreur
du siècle présent jusques aux Anglais, c’est-à-dire aux anges, et tu
feras avec eux une paix de gloire immortelle. » Aussitôt faisant
attacher des voiles à ses navires, les munissant de leurs rames, et
les chargeant de grain, de vin et de pièces de lard, Rollon traversa la
mer à force de voiles, et arriva chez les Anglais, desirant y demeurer
long-temps et en repos. [p. 28] Les habitans de ce territoire ayant
appris l’arrivée de Rollon-le-Dace, levèrent une grande armée contre
lui et firent tous leurs efforts pour le chasser de leur pays. Lui, selon
son usage, marchant au combat sans hésiter, se porta à leur
rencontre, leur tua un grand nombre d’hommes, et les autres ayant
pris la fuite, il fatigua leurs épaules de sa lance. Enfin de plus
grandes forces s’étant réunies aux hommes du pays qui avaient déjà
pris les armes, ils conduisirent une nouvelle armée contre Rollon et
cherchèrent à le tuer ou à le mettre en fuite. Mais, Rollon instruit
aux travaux de la guerre, et rendu plus terrible par la nécessité de
vaincre, couvert d’un casque merveilleusement garni en or, et revêtu
d’une cuirasse à triple tissu, marcha vivement et sans hésitation
contre les bandes armées qui s’avançaient pour le combattre; de son
bras vigoureux il renversa des milliers d’hommes par terre, et
poursuivant les fuyards d’une course rapide, il fit prisonniers
plusieurs de leurs chefs; puis revenant sur le champ de bataille il
ensevelit les corps des morts, fit enlever et transporter les blessés,
et enchaîna ses prisonniers sur ses navires. Alors incertain entre trois
projets différents, savoir, de retourner dans la Dacie, de se diriger
vers la France, ou de demeurer sur le sol Anglais pour l’affliger par
de nouveaux combats et de s’en rendre maître, il tomba dans une
grande agitation, et devint extrêmement triste.
[p. 29]

C H A P I T R E V.

D’un songe de Rollon, et de l’explication de ce songe par un certain chrétien.

TANDIS qu’il demeurait constamment préoccupé de ses sollicitudes,


et que les hommes de cette contrée se soumettaient à son joug et
s’attachaient fidèlement à lui, une certaine nuit que le sommeil
s’insinuait doucement dans ses membres et lui procurait un repos,
image de la mort, Rollon crut se voir supérieur à tous les hommes,
et transporté dans une habitation, sur la montagne la plus élevée de
France, au sommet de laquelle était une fontaine d’eau limpide et
odoriférante, dans laquelle il se lavait et se purifiait de la souillure et
de la démangeaison de la lèpre. Tandis qu’il demeurait encore au
sommet de cette montagne, il crut voir en outre, tout autour de la
base de la montagne et de tous les côtés, de nombreux milliers
d’oiseaux de diverses espèces et de couleurs variées, ayant de plus
les ailes gauches très-rouges, et disséminés en long et en large si
loin et en une telle quantité que sa vue, quoique perçante et fixée
sur eux, ne pouvait en découvrir la fin. Du reste ces oiseaux
s’envolant tour à tour et se dirigeant vers le sommet de la
montagne, s’approchaient alternativement de la fontaine et venaient
s’y laver et s’y baigner, comme les oiseaux ont coutume de faire par
un temps qui annonce une pluie prochaine. Lorsque tous eurent pris
ainsi ce bain merveilleux, ils s’arrêtèrent à une [p. 30] bonne place,
sans distinction de genres ni d’espèces, sans se faire aucune
querelle, se mirent à manger les uns après les autres et en bonne
amitié; puis apportant de petites branches ils travaillèrent avec
ardeur à faire des nids, et même aussitôt qu’ils en recevaient le
commandement de celui qui les voyait en songe, ils se mettaient à
couver sans aucun effort.
Rollon s’étant éveillé et se souvenant de la vision qui lui était
apparue, appela auprès de lui les principaux de ses chefs, fit venir
aussi les chefs qu’il avait faits prisonniers dans la bataille, leur
raconta sans délai tous les détails de sa vision et leur demanda ce
qu’ils pensaient du sens mystérieux de ce songe. Tous demeuraient
en silence, lorsque l’un des captifs, imbu de la foi de la religion
chrétienne, et saisi tout à coup, par l’inspiration divine, d’un esprit
prophétique, expliqua le sens mystérieux de cette vision, disant:
« Cette montagne de la France, sur laquelle tu as cru te voir élevé,
désigne l’Eglise de ce royaume. La fontaine qui était au sommet de
la montagne, signifie le baptême de régénération. Par la lèpre et la
démangeaison dont tu étais souillé, tu dois entendre les crimes et
les péchés que tu as commis. Tu t’es lavé dans les eaux de cette
fontaine, et elles t’ont purifié du mal de la lèpre et de la
démangeaison; ce qui veut dire que tu seras régénéré par le bain du
baptême sacré et purifié par lui de tous tes péchés. Par ces oiseaux
d’espèces diverses, qui avaient les ailes gauches très-rouges, et qui
étaient répandus au loin, tellement que ta vue ne pouvait en
découvrir la fin, tu dois entendre les hommes de diverses provinces,
ayant les bras garnis de leurs boucliers, [p. 31] qui deviendront tes
fidèles et que tu verras rassemblés autour de toi en une multitude
innombrable. Ces oiseaux plongeant dans la fontaine, s’y baignant
tour à tour et mangeant en commun, désignent ce peuple souillé du
poison de l’antique erreur, qui doit être purifié symboliquement par
le baptême et repu de la nourriture du corps et du sang très-saints
du Christ. Les nids que ces oiseaux faisaient autour de la fontaine
désignent les remparts des villes détruites, et qui doivent être
relevés. Les oiseaux d’espèces diverses étaient attentifs à tes ordres,
et les hommes de divers royaumes te serviront, se coucheront
devant toi, et t’obéiront. »
Réjoui par cette admirable interprétation, Rollon délivra de leur
fers celui qui avait interprété sa vision et tous les autres prisonniers,
et les ayant enrichis de ses dons, il les renvoya remplis de joie.

CHAPITRE VI.
3
D’Alstem , roi très-chrétien des Anglais, avec lequel Rollon conclut un traité
d’amitié inviolable.

EN ce temps le roi très-chrétien des Anglais, nommé Alstem,


comblé de richesses et très-digne défenseur de la très-sainte Eglise,
gouvernait l’Angleterre avec une grande bonté. Rollon lui envoya des
députés, auxquels il prescrivit ce qu’ils avaient à dire de sa part à ce
roi. Eux donc s’étant rendus auprès de lui, baissant [p. 32] la tête et
d’une voix respectueuse, lui parlèrent en ces termes: « Le plus
puissant de toutes les patrices, le duc des Daces, le très-excellent
Rollon, notre seigneur et notre protecteur, te présente ses fidèles
services et le don d’une amitié inaltérable. Seigneur roi, après que
nous avons eu éprouvé une grande calamité dans le royaume de
Dacie, d’où nous avons été, ô douleur! frauduleusement expulsés;
après que nous avons été misérablement ballotés sur les flots
soulevés par les tempêtes, un vent d’est favorable nous a enfin
poussés sur ton territoire, tristes et dénués de toute espérance et de
tout moyen de salut. Comme nous faisions effort pour retourner en
Dacie et aller nous venger de nos ennemis, les glaces de l’hiver nous
ont arrêtés et enfermés. La terre s’est revêtue d’une croûte de
gelée, la chevelure flexible des plantes et des arbres s’est roidie, les
fleuves, arrêtés dans leur cours par une masse épaisse de glace, ont
élevé devant nous une muraille, et les eaux n’ont pu nous fournir de
chemin. Quelques chevaliers habitant dans le voisinage du lieu de
notre débarquement ont rassemblé contre nous une très-grande
armée et nous ont provoqués et attaqués. Nous cependant, ne
pouvant naviguer ni sur la glace, ni sous sous la glace, nous avons
résisté à leur attaque, et dans une bataille nous avons désarmé et
fait prisonniers beaucoup d’entre eux. Toutefois nous ne dévasterons
point ton royaume, nous n’emporterons point sur nos vaisseaux le
butin par nous enlevé. Nous demandons une paix amie et la faculté
de vendre et d’acheter, parce que, à l’époque du [p. 33] printemps qui
s’approche, nous partirons pour la France. » Le roi leur montrant un
visage joyeux après avoir entendu ces paroles, leur dit: « Nulle terre
ne porte comme la Dacie des hommes distingués, vaillans et habiles
à la guerre. Plusieurs personnes nous on fait des rapports sur
l’illustre origine de votre seigneur, sur les malheurs et les fatigues
que vous avez endurées, et même sur l’horrible perfidie du roi de
Dacie envers vous. Nul n’est plus juste dans ces actions que votre
seigneur, nul n’est plus grand par ses armes. Bannissez désormais
toute sollicitude, vivez en sécurité, ne redoutez point de combats et
soyez affranchis de tous maux. Qu’il vous soit permis de vendre et
d’acheter en tous lieux sur le territoire soumis à notre domination.
Décidez votre seigneur, nous vous en prions, à daigner se confier en
notre foi et à venir auprès de nous. Je désire le voir et le consoler de
ses malheurs. » Les députés repartirent et rapportèrent à Rollon tout
ce qu’ils avaient entendu. Alors et sans aucun retard Rollon se rendit
courageusement vers le roi, qui se porta à sa rencontre. Ils
s’embrassèrent l’un l’autre, se donnèrent des baisers, et leurs
armées s’étant retirées, ils s’assirent ensemble à l’écart. Alors le roi
Alstem parla le premier:
« Guerrier puissant par tes aïeux, illustre par tes brillans exploits,
distingué parmi tous les autres par tes vertus et tes mérites, nous
nous plaisons à nous unir avec toi par des liens de fidélité. Sois, je te
le demande, sois toujours une portion de mon ame, et mon
compagnon à jamais; je te demande même de demeurer sur notre
territoire et de te purifier [p. 34] de toute souillure par le baptême
salutaire. Ce que tu desires, possède-le dans le pays soumis à ma
domination. Souviens-toi de moi, comme je me serai souvenu de toi
en toutes choses; mais si tu veux maintenant te rendre vers d’autres
rives, si ton peuple farouche et méfiant s’est déjà irrité contre moi,
et ne veut pas, dans sa méchanceté, me conserver la fidélité
promise, prête-lui ton secours selon tes moyens et sauve-le par tes
efforts opiniâtres. Moi-même je te secourrai et je t’assisterai avec le
plus grand zèle, et mon bouclier te protègera dans tes entreprises. »

CHAPITRE VII.

De la tempête que Rollon eut à essuyer en se rendant de l’Angleterre vers le


4
royaume de France, et comment il aborda sur les côtes du pays des Walgres.

ALORS Rollon, réjoui des paroles du roi lui répondit, à ce qu’on


rapporte: « O le plus illustre de tous les rois, je te rends grâces de ta
bonne volonté, et je desire que tu fasses tout ce que tu as dit devoir
être fait entre moi et toi. Je ne séjournerai pas très-long-temps dans
ton royaume et je me rendrai en France le plus tôt qu’il me sera
possible. En quelque lieu de la terre que je sois, je demeurerai ton
ami et te serai uni par les liens d’une affection inaltérable. » A ces
mots ils conclurent une alliance indissoluble, et s’étant [p. 35]
mutuellement enrichis par d’admirables présens, chacun retourna
chez lui avec les siens. Durant toute la saison de l’hiver, le duc Rollon
fit préparer avec un soin extrême ses navires et toutes les choses
dont il avait besoin pour le voyage, et il appela auprès de lui des
chevaliers anglais, tous brillans de jeunesse, qui s’étaient faits ses
hommes et devaient partir avec lui.
Or, à l’époque du printemps, lorsque les fleurs commencèrent à
briller en abondance, lorsque les lis odorans et blancs de lait
fleurissaient au milieu des violettes empourprées, Rollon se
souvenant toujours de la vision qui l’avait invité à se rendre en
France, fit déployer les voiles de ses vaisseaux et partit avec sa
flotte. Mais lorsque les vents légers l’eurent poussé en pleine mer,
lorsqu’on ne vit plus que le ciel enveloppant la surface des eaux, les
esprits malins, sachant que tous ces hommes devaient être purifiés
par le baptême au nom du Christ, et obtenir ainsi la gloire qu’eux-
mêmes ont perdue, s’affligèrent et coururent à leur rencontre pour
leur susciter de nouveaux périls. Les vents s’élancèrent hors de leurs
cavernes, et la mer s’entr’ouvrant devant eux dans ses plus grandes
profondeurs, ses flots se soulevèrent jusque vers les astres. Au
milieu des éclairs sans cesse renaissans le ciel retentit des éclats du
tonnerre, et d’épaisses ténèbres s’appesantirent sur la flotte; les
rames furent brisées et les voiles ne purent résister à la violence des
vents. Epuisés et n’ayant plus de forces, les navigateurs
s’abandonnèrent à la fureur de la tempête; les vaisseaux flottaient
çà et là, comme à travers des montagnes et des vallons, et tous se
voyaient à chaque instant menacés de la mort. Alors [p. 36] Rollon se
prosternant sur son navire, élevant les bras vers le ciel, prononça ces
paroles d’une voix humble et craintive:
« O Dieu tout-puissant, qui remplis de ta lumière les demeures
célestes, qui possèdes le ciel et la terre, dont la divinité est de tous
les siècles, qui embrasses toutes choses dans le cercle de ton
éternité, qui, par le bienfait de la vision que tu m’as montrée, veux
que d’ici à peu de temps je devienne serviteur du Christ, moi tout
infecté de vices, tout rempli de péchés et de souillures, accueille mes
vœux avec bonté, sois favorable à mes prières, apaise les flots irrités
au milieu de ces débris, délivre-nous de tant de fatigues et de périls;
calme, adoucis, comprime la mer agitée par cette trop violente
tempête. »
A peine cette prière était-elle terminée, la mer devint calme, et la
tempête se dissipa. Bientôt les Danois poussés par un vent favorable
traversèrent les immenses espaces de la mer, et leurs navires tout
brisés par l’ouragan abordèrent sur les côtes des Walgres.
[p. 37]

CHAPITRE VIII.
Comment Rollon vainquit les Walgres, qui voulurent lui résister, ainsi que Rainier,
duc du Hainaut, et Radbold, prince de Frise. — De douze navires chargés de
vivres et d’autant de vaisseaux remplis de chevaliers, que le roi des Anglais
Alstem envoya à Rollon tandis qu’il était en ce pays.

OR les Walgres ayant appris qu’une nation barbare, poussée par la


violence de la tempête, venait d’aborder sur leurs côtes,
rassemblèrent la multitude des gens de leur pays, et allèrent assaillir
le duc Rollon à peine échappé aux fureurs de la mer. Mais lui, se
relevant selon sa coutume et marchant contre eux pour combattre,
frappa de mort un grand nombre d’entre eux, les envoya dans
l’enfer, et les autres, il les mit en fuite, ou les fit prisonniers. Comme
il demeura long-temps en ces lieux, dévastant le pays des Walgres,
le roi très-chrétien des Anglais, Alstem, le plus distingué de tous les
rois par ses vertus, se souvenant de son amitié et du traité par
lequel il s’était uni à jamais avec Rollon, envoya à l’illustre duc, dans
le pays des Walgres, douze navires chargés de grains, de vin et de
lard, et autant de vaisseaux remplis de chevaliers armés. Réjoui de
ces dons, Rollon renvoya au roi ses députés enrichis de très-beaux
présens, lui adressant en outre mille actions de grâces, et lui
promettant par leur entremise qu’il serait toujours son serviteur. Or
les Walgres croyant, à raison de la grande quantité de grains qui lui
était apportée, que [p. 38] Rollon voulait demeurer à jamais chez eux,
appelèrent à eux Rainier au long cou, duc de Hasbaigne et du
Hainaut, et Radbold, prince de Frise, et levant une armée dans
d’autres contrées, ils allèrent attaquer Rollon. Celui-ci se battit très-
souvent contre eux sans la moindre crainte, leur tua beaucoup de
milliers d’hommes, mit en fuite Rainier au long cou et Radbold le
Frison, et les repoussa dans leurs châteaux. Ensuite il dévasta et
livra aux flammes tout le territoire des Walgres. Irrité de leurs
attaques, il marcha en toute hâte contre les Frisons et se mit à
ravager tout leur pays. Alors les Frisons, rassemblant promptement
une nombreuse population, et s’associant une multitude de petites
peuplades qui habitaient sur les confins de la Frise, s’avancèrent
d’une marche rapide pour aller attaquer Rollon, qui résidait alors sur
les bords d’un fleuve, et qui avait aussi réuni ses nombreux
bataillons. Mais Rollon et ceux qui étaient avec lui, se voyant
menacés de toutes les horreurs de la guerre, mirent les genoux en
terre, et portant leurs boucliers en avant, se confiant au tranchant
sacré de leurs glaives étincelans, attendirent le signal de la bataille.
Les Frisons, jugeant que leur troupe était peu nombreuse,
engagèrent un combat qui ne devait pas tourner à leur avantage.
Alors les Daces se relevant et s’élançant sur eux, en firent un grand
massacre, leur prirent plusieurs de leurs princes et emmenèrent à
leurs navires une troupe innombrable de prisonniers. Dès ce moment
les autres Frisons, se défiant d’eux-mêmes, devinrent tributaires de
Rollon, et obéirent à ses ordres en toutes choses. Après avoir
imposé, levé et recueilli un tribut sur la [p. 39] Frise, Rollon fit aussitôt
lever dans les airs les voiles de ses navires, et dirigea leurs proues
vers les terres de Rainier au long cou, desirant se venger de cet
homme, qui avec les Frisons avait porté secours aux Walgres déjà
vaincus dans une bataille. Ayant navigué sur la mer, Rollon entra
dans le fleuve de l’Escaut, et ravageant sur les deux rives le territoire
de Rainier au long cou, il arriva enfin à une certaine abbaye nommée
Condat. Rainier lui livra plusieurs combats; mais Rollon sortit de tous
ces combats vainqueur et puissant. Le pays fut dévasté, et eut à
souffrir toutes sortes de maux de la part des deux armées.
Cependant une terrible famine survint, parce que la terre n’était plus
déchirée par la charrue. Le peuple fut affligé par la disette, et détruit
par la faim et la guerre. Tous désespéraient de leur vie, se voyant
privés des alimens qui l’entretiennent. Un certain jour donc, Rainier
s’étant placé en embuscade dans l’intention de tomber à l’improviste
sur les Daces, ceux-ci s’étant rassemblés de tous côtés,
l’enveloppèrent, s’emparèrent de sa personne, malgré sa vive
résistance, et le conduisirent enchaîné devant Rollon.
Ce même jour les gens de Rainier, voulant prendre quelques
Daces, se cachèrent dans un lieu de retraite, attaquèrent douze des
chevaliers de Rollon avec une grande vigueur, et les firent
prisonniers. Alors la femme de Rainier, pleurant et se lamentant sur
son sort, convoqua ses chefs, et les envoya à Rollon pour lui
demander de lui rendre son seigneur en échange de ses douze
compagnons d’armes. Rollon ayant reçu sa députation, la lui renvoya
sur-le-champ, en disant: [p. 40] « Rainier ne te sera point rendu; mais
je lui ferai couper la tête si tu ne me renvoies d’abord mes
compagnons, si tu ne me livres en outre tout ce qu’il y a d’or et
d’argent dans son duché, sous le serment de la religion chrétienne,
et si de plus cette contrée ne me paie un tribut. » Bientôt l’épouse
de Rainier, affligée du mauvais succès de sa députation, renvoya à
Rollon ses compagnons prisonniers, et lui fit porter tout l’or et
l’argent qu’elle put trouver en tous lieux. Elle y ajouta même celui
qui appartenait aux autels sacrés et tous les impôts du duché, en
faisant serment qu’elle ne possédait ni ne pouvait prélever plus de
métal, et en adressant en même temps à Rollon des prières et des
paroles de supplication pour qu’il lui rendît son époux. Emu de
compassion et touché des paroles de ceux qui l’imploraient en
supplians, Rollon fit venir devant lui Rainier au long cou, et lui fit
entendre ce langage de paix: « Rainier, duc et chevalier très-
redoutable, issu du sang illustre des rois, des ducs et des comtes,
quelle offense t’avais-je faite autrefois pour que tu combattisses
contre moi avec les Walgres et les Frisons? Maintenant si tu voulais
te livrer à tes fureurs, tu n’as plus ni armes, ni satellites; et si tu
voulais t’échapper par la fuite, maintenant enlacé dans les fers et
captif, tu ne pourrais te sauver. Je t’ai rendu le talion à toi ainsi
qu’aux Frisons pour les maux que vous m’avez faits sans aucun
motif. Ta femme et tes chefs m’ont envoyé pour toi tout ce qu’ils ont
pu ramasser d’or et d’argent. Je te rendrai la moitié de ces dons
accumulés, et je te renverrai à ta femme. Maintenant donc [p. 41]
calme-toi, apaise-toi; que désormais il n’y ait plus de discorde, mais
plutôt qu’il y ait à jamais entre moi et toi paix et amitié. » A ces
mots, les jambes de Rainier furent délivrées de leurs chaînes.
Aussitôt Rollon s’unit à lui par un traité, l’enrichit de ses dons et de
très-grands présens, et lui ayant même rendu la moitié de ceux qu’il
en avait reçus, il le renvoya ensuite à sa femme.

CHAPITRE IX.
Comment, l’an du Verbe incarné 876, Rollon arriva à Jumiège et de là à Rouen; et
comment l’archevêque Francon lui demanda et en obtint la paix.

LES choses ainsi terminées, les Danois et leur duc Rollon livrèrent
leurs voiles au vent, et abandonnant le fleuve de l’Escaut pour
naviguer à travers la mer, l’an 876 de l’Incarnation du Seigneur, ils
entrèrent dans les eaux de la Seine, poussés par un vent favorable,
arrivèrent à Jumiège, et déposèrent le corps de la sainte vierge
Ameltrude, qu’ils avaient transporté de Bretagne, sur l’autel de la
chapelle de saint Waast, située au delà du fleuve. Cette chapelle a
porté jusqu’à présent le nom de cette vierge. Francon, archevêque
de Rouen, ayant appris leur arrivée, voyant les murailles de la ville
renversées par eux, avec une férocité ennemie, et n’attendant aucun
secours qui pût leur résister, jugea qu’il serait plus avantageux de
leur demander la paix que de les provoquer par une démarche
quelconque à compléter la [p. 42] ruine de la ville. Se rendant donc
auprès d’eux en toute hâte, il demanda la paix, obtint ce qu’il
desirait, et conclut avec eux un solide traité. Après cela, les Daces
empressés dirigèrent promptement vers les remparts de la ville leurs
navires chargés de nombreux chevaliers, et abordèrent à la porte qui
touche à l’église de Saint-Martin. Considérant, dans la sagacité de
leur esprit, que la citadelle de la ville était bien défendue par terre et
par mer, et pouvait être aisément approvisionnée avec les épargnes,
ils résolurent d’un commun accord d’en faire la capitale de tout leur
comté.

CHAPITRE X.

Comment Rollon et les siens étant arrivés le long de la Seine, à Arques, que l’on
appelle aussi Hasdans, y construisirent des retranchemens, combattirent contre
les Francs, et en ayant tué beaucoup, mirent en fuite Renaud, leur duc; après
quoi ils détruisirent le château de Meulan.

ROLLON donc s’étant emparé de Rouen méditait en son cœur


artificieux la ruine de la ville de Paris, et s’en occupait avec les siens,
semblable à un loup dévorant, et ayant soif, dans sa fureur païenne,
du sang des Chrétiens. Détachant alors leurs navire sillonnant les
flots de la Seine, ils vinrent s’arrêter auprès de Hasdans, que l’on
appelle aussi Arques. Renaud, duc de toute la France, ayant appris
l’arrivée inopinée des Païens, se porta au devant d’eux sur le fleuve
de l’Eure avec une vaillante armée, et envoya [p. 43] en avant, avec
d’autres députés, Hastings, qui demeurait encore dans la ville de
Chartres, et qui avait la connaissance de leur langage. Hastings donc
se rendit auprès d’eux, en suivant le cours de l’eau, et leur adressa
la parole en ces termes: « Holà, très-vaillans chevaliers, apprenez-
nous de quelles rives vous êtes arrivés ici, ce que vous cherchez en
ces lieux, et quel est le nom de votre seigneur; nous sommes
députés vers vous par le roi des Francs. » A ces questions Rollon
répondit: « Nous sommes Danois, et tous égaux. Nous venons
chasser les habitans de cette terre, desirant nous faire une patrie et
la soumettre à notre domination. Mais toi, qui es-tu pour nous parler
d’un ton si enjoué? » Hastings répondit alors: « Auriez-vous par
hasard entendu parler d’un certain Hastings, qui, exilé de votre pays,
arriva en ces lieux avec une multitude de vaisseaux, détruisit en
grande partie ce royaume des Francs, et en fit un désert? — Nous en
avons entendu parler, reprit Rollon; Hastings en effet commença
sous d’heureux auspices, mais il fit une mauvaise fin. — Voulez-vous,
leur dit alors Hastings, vous soumettre au roi Charles? — Nullement,
répliqua Rollon, nous ne nous soumettrons à personne: tout ce que
nous pourrons conquérir par nos armes, nous le ferons passer sous
notre juridiction. Rapporte, si tu veux, ce que tu viens d’entendre au
roi dont tu te glorifies d’être député. »
Aussitôt Hastings alla redire toutes ces choses à son duc. Pendant
ce temps, Rollon et ceux qui étaient avec lui se firent des
retranchemens et une redoute [p. 44] en forme de château, se
fortifiant derrière une levée de terre et laissant au lieu de porte un
vaste espace ouvert, dont aujourd’hui encore on voit apparaître
quelques traces. A la pointe du jour les Francs se rendirent à l’église
de Saint-Germain, entendirent la messe et participèrent au corps et
au sang du Christ. Partant de là à cheval, et voyant sur la rive du
fleuve les vaisseaux et tout près d’eux les Daces derrière les
retranchemens de la terre qu’ils avaient retournée, ils allèrent
attaquer le point qui demeurait ouvert en guise de porte. De l’autre
côté les Daces se couchèrent çà et là dans la plaine et se
recouvrirent de leurs boucliers, afin qu’on les crût en fort petit
nombre. Roland, porte-enseigne de Renaud, et ceux qui marchaient
avec lui en avant de l’armée, s’élancèrent vivement sur les Daces par
la large ouverture qu’ils avaient laissée libre, et commencèrent à les
battre. Mais les Daces se relevant aussitôt, tuèrent en un moment
Roland et ceux qui le suivaient. Renaud, Hastings et les autres
comtes ayant vu tous ces morts, tournèrent le dos et prirent la fuite
très-lestement. Les choses s’étant ainsi passées, Rollon repartit avec
ses navires, alla en toute hâte, s’emparer du château de Meulan, et
l’ayant renversé, il fit périr par le glaive tous les habitans.
[p. 45]

CHAPITRE XI.

Par quelle perfidie le comte Thibaut acheta à Hastings la ville de Chartres, et


comment Hastings lui-même ayant tout vendu, partit en pélerin et disparut.

LE comte Thibaut jugeant qu’il avait rencontré une occasion


favorable pour tromper Hastings, le séduisit alors par ces paroles
pleines de fausseté: « Pourquoi, homme très-illustre, demeures-tu
engourdi par la paresse? Ignores-tu que le roi Charles veut te
frapper de mort, à cause du sang des Chrétiens que tu as jadis
injustement répandu? Car il se souvient des maux que tu lui as fait
souffrir méchamment, et c’est pourquoi il a résolu de t’expulser de
son territoire. Ta main, dit-il lui-même, s’entend avec Rollon le païen
pour anéantir les Francs. Aussi seras-tu bientôt misérablement
anéanti par eux. Prends donc garde à toi, afin que tu ne sois pas
puni sans l’avoir prévu. » Effrayé par ces paroles, Hastings vendit
tout aussitôt la ville de Chartres à Thibaut, et ayant tout perdu, il
partit en pélerin et disparut.
[p. 46]
CHAPITRE XII.

Nouvelle guerre de Renaud, prince de France, avec Rollon, et mort de Renaud.


— Du siége de la ville de Paris pendant un an, et de la destruction de la ville de
Bayeux, dans laquelle Rollon prit une certaine jeune fille nommée Popa, dont il
eut Guillaume et Gerloc, sœur de celui-ci. — Comment l’armée de Rollon
massacra les citoyens de la ville d’Evreux, tandis que lui-même assiégeait Paris
avec quelques-uns des siens.

RENAUD ne pouvant supporter la honte de sa fuite, rassembla de


nouveau une plus grande armée, et alla tout à coup attaquer Rollon.
Mais celui-ci marchant à sa rencontre, fit périr quelques-uns de ses
hommes par le glaive, et les autres ayant pris honteusement la fuite,
il les poursuivit; Renaud lui-même tomba mort, percé d’un trait par
un certain pêcheur de la Seine qui s’était donné à Rollon. Alors
Rollon levant les ancres, fit force de rames vers Paris, mit le siége
autour de cette ville, et y fit conduire du butin enlevé de tous côtés.
Tandis qu’il demeurait en ce lieu, des éclaireurs arrivèrent, lui
annonçant que la ville de Bayeux était dénuée de défenseurs, et
pouvait être prise très-facilement, sans que le vainqueur, quel qu’il
fût, eût aucun risque à courir. Aussitôt retirant ses navires du siége,
Rollon fit voile vers Bayeux en toute hâte. S’étant emparé de cette
ville, il la détruisit en partie et massacra ses habitans. Il prit aussi
dans cette ville une très-noble jeune fille, nommée Popa, fille de
Bérenger, homme illustre; peu de temps après il s’unit avec elle, à la
manière des Danois, et [p. 47] il eut d’elle son fils Guillaume et une
fille très-belle nommée Gerloc. Cette ville étant ainsi à peu près
détruite, Rollon retourna en toute hâte vers Paris. Tandis qu’il
s’occupait avec des beliers et des machines à lancer des pierres, il
envoya une armée de chevaliers contre la ville d’Evreux, afin qu’ils
eussent à la renverser, et à faire périr son évêque nommé Sibor et
toute sa population. Les chevaliers y étant arrivés, et n’ayant pas
trouvé l’évêque, qui s’était enfui, massacrèrent tous les citoyens, et
retournèrent auprès de leur duc avec un très-grand butin. Aussi les
peuples de la France étaient-ils effrayés de tous ces faits: les uns
payaient tribut à Rollon, et les autres lui résistaient.
CHAPITRE XIII.
5
De Elstan , roi des Anglais, qui envoya des députes à Rollon lui demander du
secours contre des rebelles, et reçut de lui ce secours. — Comment Rollon,
revenant d’Angleterre, après avoir vaincu les Anglais, selon le vœu de leur roi,
enrichi de très-grands dons et conduisant des auxiliaires, détacha les comtes de
son armée et les envoya promptement, et par eau, les uns sur le fleuve de la
Seine, les autres sur la Loire, les autres sur la Gironde, pour faire dévaster les
provinces intermédiaires.

TANDIS que ces choses se passaient, arrivèrent des députés du roi


des Anglais, Elstan, portant à Rollon de très-instantes prières pour
qu’il allât le secourir au plus tôt. En effet certains rebelles, prenant
les armes, avaient conspiré contre lui. Rempli de compassion [p. 48]
pour les maux que ce roi souffrait, et de plus attendant peu de
résultat du siége de la ville de Paris, tant à raison de la difficulté de
s’en approcher, qu’à cause de l’extrême abondance des vivres dans
la ville, Rollon abandonna le siége et se rendit en Angleterre. Y étant
arrivé, il attaqua les rebelles, les réprima avec sévérité, et recevant
d’eux des otages, il les remit sous le joug de leur roi. De là ayant
rassemblé de nouveau une multitude de jeunes gens d’élite, et
emportant de très-grands présens qu’il reçut du roi, il retourna en
France, et détachant aussitôt les comtes de son armée, il les envoya
par eau, les uns sur le fleuve de la Seine, d’autres sur celui de la
Loire, d’autres sur celui de la Gironde, pour qu’ils eussent à dévaster
les provinces intermédiaires. Lui-même se rendit ensuite à Paris,
recommença le siége de cette ville, et se mit à dévaster le territoire
de ses ennemis.

C H A P I T R E X I V.

Comment Charles, ayant appris le retour de Rollon, lui demanda et obtint une paix
de trois mois, et comment, ce délai expiré, Rollon envoya les siens jusqu’en
Bourgogne, pour enlever du butin de tous côtés.

OR le roi Charles ayant appris que Rollon était de retour du pays


des Anglais, après avoir heureusement accompli son expédition, lui
envoya Francon, archevêque de Rouen, pour lui demander de
s’abstenir de faire du mal aux Francs et de lui accorder une trève de
trois mois. Cette trève ayant été consentie, la terre [p. 49] respira
quelque peu des ravages des Païens. Or, lorsque les trois mois furent
passés, Rollon, se croyant méprisé par les Francs, à cause du repos
qu’il leur avait accordé, dévasta rudement et cruellement les
provinces, et se mit déchirer, à désoler et à détruire le peuple. Ses
hommes se rendant en Bourgogne et naviguant sur les rivières de
l’Yonne et de la Saône, dévastant de tous côtés toutes les terres
situées sur les bords des rivières jusques à Clermont, envahirent la
province de Sens, et ravageant tout ce qu’ils rencontraient, revinrent
à la rencontre Rollon auprès du monastère de Saint-Benoît. Or
Rollon voyant ce monastère ne voulut pas le violer, et ne permit pas
que le pays fût livré au pillage, par égard pour saint Benoît; mais il
se rendit à Etampes, détruisit tout le territoire environnant, et fit un
grand nombre de prisonniers. De là se dirigeant vers Villemeux, il
ravagea tout le pays voisin, et se hâta ensuite de retourner à Paris.

C H A P I T R E X V.

Comment, tandis que Rollon assiégeait la ville de Chartres, Richard, duc de


Bourgogne, s’élança sur lui avec son armée et l’armée des Francs; et comme
Rollon résistait vigoureusement, Anselme, l’évêque, sortit à l’improviste de la
ville avec des hommes armés, portant la tunique de la sainte Mère de Dieu, et
attaqua Rollon sur ses derrières. Rollon céda alors non aux Bourguignons, mais
à la puissance divine.

ENFIN Rollon investit et assiégea la ville de Chartres, et, tandis qu’il


l’attaquait avec des machines [p. 50] et des engins de guerre, Richard,
duc de Bourgogne, survenant avec son armée et avec l’armée des
Francs, se précipita sur lui. Rollon se battant avec Richard lui résista
vigoureusement, jusqu’à ce que Anselme, l’évêque, sortant à
l’improviste de la ville avec des hommes armés et portant sur lui la
tunique de sainte Marie, mère de Dieu, attaqua Rollon sur ses
derrières et lui tua beaucoup de monde. Alors Rollon se voyant sur le
point de périr avec tous les siens, résolut sur-le-champ de se retirer
devant les ennemis, plutôt que de combattre au détriment de ses
compagnons; et ainsi il abandonna le combat par une sage
résolution et non point par lâcheté.

CHAPITRE XVI.

Comment une certaine portion de l’armée de Rollon monta sur une certaine
montagne, et comment Ebble, comte du Poitou, se cacha dans la maison d’un
foulon pour éviter les Normands.

OR une certaine portion de l’armée de Rollon fuyant devant les


Francs qui la poursuivaient, arriva aux Loges, et monta sur le
sommet d’une certaine montagne. Ebble, comte du Poitou, venant
trop tard pour le combat, apprit que les Païens avaient occupé les
hauteurs de cette montagne. Il les poursuivit aussitôt, et afin qu’ils
ne pussent lui échapper, il investit avec ses chevaliers tout le tour de
la montagne; mais au milieu de la nuit, les Normands faisant
irruption de vive force au travers du camp des Francs, échappèrent
ainsi au péril qui les menaçait. Ebble [p. 51] apprenant que Rollon
allait se précipiter sur ses compagnons, se glissa dans la maison d’un
certain foulon, et y demeura caché toute la nuit, tremblant de
frayeur. Au point du jour, les Francs ayant reconnu que les Païens
leur avaient échappé, pressèrent leurs chevaux de leurs éperons, et
se mirent à leur poursuite. Les ayant atteints, ils n’osèrent
cependant les attaquer, attendu que les Païens s’étaient fortifiés
comme dans un camp en s’entourant de cadavres d’animaux, qu’ils
avaient couverts de sang; ainsi n’ayant pu réussir dans leur
expédition, les Francs prirent aussitôt la fuite, et les Normands,
s’étant sauvés, allèrent avec joie retrouver leur duc Rollon.

CHAPITRE XVII.

Comment Rollon, étant enflammé de fureur et continuant de plus en plus à


opprimer et à dévaster la France, le roi Charles lui donna sa fille et tout le
territoire maritime, depuis la rivière d’Epte jusqu’aux confins de la Bretagne, et
même la Bretagne entière pour qu’il y trouvât de quoi vivre, attendu que le
territoire ci-dessus désigné était ravagé et abandonné, sous la condition qu’il se
ferait chrétien. — Comment le roi, Robert, duc de France, les autres grands et
les évêques jurèrent que ce pays serait possédé à perpétuité par Rollon et par
ses héritiers; et comment Rollon ne voulant pas baiser le pied du roi, ordonna à
un de ses chevaliers de le baiser.

IRRITÉ de ses malheurs et enflammé de fureur par la mort de ses


chevaliers, Rollon rassembla tous ceux qui lui restaient pour
continuer à faire du mal aux Francs, et les excita à faire les plus
grands efforts [p. 52] pour venger leurs compagnons, en dévastant et
ruinant de fond en comble tout le pays. Que dirai-je de plus?
Semblables à des loups, les Païens pénètrent de nuit dans les
bergeries du Christ, les églises sont embrasées, les femmes
emmenées captives, le peuple massacré; un deuil général se répand
en tous lieux: enfin, accablés de tant de calamités, les Francs
portent leurs plaintes et leurs cris de douleur devant le roi Charles,
s’écriant tous d’une voix unanime que par suite de son inertie le
peuple chrétien périra entièrement sous les coups des Païens. Le roi,
vivement touché de leurs plaintes, fait venir l’archevêque Francon, et
l’envoie en toute hâte vers Rollon, lui mandant que, s’il veut se faire
chrétien, il lui donnera tout le territoire maritime qui s’étend depuis
la rivière d’Epte jusqu’aux confins de la Bretagne, et de plus sa fille
nommée Gisèle. Francon s’étant chargé de ce message et se mettant
aussitôt en voyage, se rend auprès du Païen, et lui expose l’objet de
sa mission. Le duc ayant, de l’avis des siens, accepté ces offres avec
empressement, renonce à ses dévastations, et accorde au roi une
trève de trois mois, afin que dans cet intervalle la paix puisse être
établie entre eux par un solide traité. Au temps fixé, arrivent au lieu
désigné et que l’on appelle Saint-Clair, d’une part le roi avec Robert,
duc des Francs, au delà de la rivière d’Epte, d’autre part et en deçà
de la même rivière, Rollon, entouré de ses compagnies de
chevaliers. Alors les messagers ayant, couru alternativement des uns
aux autres, la paix se conclut entre eux par les bienfaits du Christ;
Rollon jura par serment fidélité au roi; le roi lui donna sa fille et le
[p. 53] territoire ci-dessus désigné, y ajouta encore la Bretagne pour
lui fournir des moyens d’existence; et les princes de cette province,
savoir, Béranger et Alain, prêtèrent aussi serment à Rollon: car ce
territoire maritime, que l’on appelle maintenant Normandie, depuis
long-temps en proie aux incursions des Païens, était alors tout
couvert de grands bois et languissait inculte, sans que la serpe ni la
charrue le fissent valoir. Le roi avait d’abord voulu donner la province
de Flandre à Rollon pour lui fournir des moyens de subsistance; mais
Rollon ne voulut pas l’accepter, à raison des obstacles que
présentaient les marais. Rollon n’ayant pas voulu baiser le pied du
roi, au moment où il reçut de celui-ci le duché de Normandie, les
évêques lui dirent: « Celui qui reçoit un tel don, doit s’empresser de
baiser le pied du roi. » Mais Rollon leur répondit: « Jamais je ne
fléchirai mes genoux devant les genoux de quelqu’un, ni ne baiserai
le pied de quelqu’un. » Cependant se rendant aux prières des
Francs, il ordonna à un de ses chevaliers de baiser le pied du roi; et
le chevalier saisissant aussitôt le pied du roi, le porta à sa bouche,
et, se tenant debout, il le baisa, et fit tomber le roi à la renverse.
Alors il s’éleva de grands éclats de rire et un grand tumulte dans le
petit peuple. Du reste le roi Charles, Robert, duc des Francs, les
comtes et les grands, les évêques et les abbés engagèrent au patrice
Rollon, par le serment de la foi catholique, leur vie et leurs membres
et l’honneur de tout le royaume, jurant qu’il tiendrait et posséderait
le territoire ci-dessus désigné, qu’il le transmettrait à ses héritiers, et
que, dans la série des [p. 54] années à venir, ses descendants
l’occuperaient et le feraient cultiver de génération en génération. Ces
choses étant noblement terminées, le roi retourna dans ses terres,
et Rollon et le duc Robert partirent pour la ville de Rouen.

CHAPITRE XVIII.

Comment, l’an du Verbe incarné 912, Rollon et son armée reçurent le baptême, et
Rollon donna une portion de son territoire aux églises les plus vénérables avant
d’en faire la distribution entre les grands, et comme quoi il donna Brenneval à
Saint-Denis l’Aréopagite.

EN conséquence, l’an 912 de l’Incarnation du Seigneur, Rollon fut


baptisé par l’évêque Francon, de la source bénite dite de la Sainte-
Trinité. Le duc Robert le présenta sur les fonts du baptême et lui
donna son nom. Après qu’il eut été baptisé, Rollon demeure dans
ses vêtemens pendant sept jours, durant lesquels il honora Dieu et
la Sainte Eglise par les présens qu’il leur offrit. Le premier jour, il
donna une très-grande terre à l’église Sainte-Marie de Rouen, le
second jour à l’église Saint-Marie de Bayeux, le troisième jour à
l’église Sainte-Marie d’Evreux, le quatrième jour à l’église de Saint-
Michel l’Archange, placée au haut d’une montagne en dépit des
périls de la mer; le cinquième jour à l’église de Saint-Pierre et Saint-
Ouen dans le faubourg de Rouen; le sixième jour à l’église de Saint-
Pierre et Saint-Achard de Jumiège; et le septième jour il donna
Brenneval avec toute ses dépendances à Saint-Denis.
[p. 55]

CHAPITRE XIX.

Comment Rollon distribua le pays à ses hommes, releva les églises détruites et les
murailles des cités, et vainquit les Bretons révoltés contre lui.

LE huitième jour de son expiation, Rollon, s’étant dépouillé de ses


vêtemens sacrés, commença par distribuer verbalement le territoire
qu’il avait acquis, et en fit don à ses comtes et à ses autres fidèles.
Or les Païens voyant leur duc devenu chrétien, abandonnèrent leurs
idoles, et, prenant des noms chrétiens, s’empressèrent d’un commun
accord pour recevoir le baptême. Ensuite Robert, duc des Francs,
ayant heureusement terminé les choses pour lesquelles il était venu,
s’en retourna joyeusement en France.
Cependant Rollon ayant fait en grande pompe tous les préparatifs
de noce, épousa, selon les rits chrétiens, la fille du grand roi, que
nous avons déjà nommée. Il donna toute sécurité à tous les peuples
pour ceux que voudraient venir résider sur son territoire. Il distribua
le pays à ses fidèles en faisant des divisions au cordeau, fit élever de
nouvelles constructions sur cette terre depuis long-temps déserte, la
peupla et la remplit de ses chevaliers et d’étrangers. Il accorda au
peuple des droits et des lois immuables, consenties et promulguées
du consentement des chefs, et les força à vivre en paix les uns avec
les autres. Il releva les églises entièrement renversées, et répara les
temples que les Païens avaient détruits. Il [p. 56] reconstruisit aussi
les murailles et les fortifications des cités, et en fit faire de nouvelles,
Il soumit aussi les Bretons rebelles, et avec les denrées prises chez
eux, il pourvut à la subsistance de tout le royaume qui lui avait été
concédé.

CHAPITRE XX.

De la loi qu’il publia pour que nul n’eût à prêter assistance à un voleur. — Histoire
d’un paysan et de sa femme, qu’il ordonna de pendre à une potence, à cause
d’une serpe et d’un soc de charrue qui avaient été volés.

APRÈS cela, Rollon publia une loi dans les limites du pays de
Normandie, pour que nul n’eût à prêter assistance à un voleur,
ordonnant que, s’ils venaient à être pris, tous les deux seraient
pendus à la potence, Or, il arriva peu de temps après, dans le
domaine de Longuepète, qu’un certain agriculteur, voulant se
reposer, quitta son travail et rentra dans sa maison, laissant dans
son champ ses traits avec sa serpe et le soc de sa charrue. Sa
femme, aussi malheureuse qu’insensée, enleva tous ces objets à son
insu, voulant faire une épreuve au sujet de l’édit du duc. Le paysan
étant retourné dans son champ et n’y trouvant plus ses effets,
demanda à sa femme si elle les avait pris. Elle le nia, et le paysan
alla trouver le duc, lui demandant de lui faire rendre ses outils.
Touché de compassion, le duc ordonna d’indemniser cet homme en
lui donnant cinq sous, et de faire rechercher le fer dans toute la
population des environs. Mais tous [p. 57] ayant été délivrés par le
jugement de Dieu, on en vint à faire arrêter la femme du paysan, et,
à force de coups, on l’amena à se déclarer coupable. Le duc dit alors
au paysan: « Savais-tu auparavant que c’était elle qui avait volé? »
Et le paysan répondit: « Je le savais. » A cela le duc ajouta: « Ta
bouche te condamne, méchant serviteur; » et il ordonna aussitôt de
les pendre tous les deux à la potence.
On raconte encore dans le peuple au sujet de ce duc beaucoup
d’autres choses dignes d’être rapportées; mais je me bornerai au fait
suivant.
Après avoir chassé dans la forêt qui s’élève sur les bords de la
Seine tout près de Rouen, le duc, entouré de la foule de ses
serviteurs, mangeait et était assis au dessus du lac que nous
appelons en langage familier la mare, lorsqu’il suspendit à un chêne
des bracelets d’or. Ces bracelets demeurèrent pendant trois ans à la
même place et intacts, tant on avait une grande frayeur du duc; et
comme ce fait mémorable se passa auprès de la mare, aujourd’hui
encore cette forêt elle-même est appelée la Mare de Rollon. Ainsi
comprimant et effrayant le peuple par de telles sévérités, tant par
amour pour la justice, selon que le lui enseignait la loi divine, que
pour maintenir la concorde et la paix entre ses sujets, et pour jouir
lui-même de ses honneurs en toute tranquillité, le duc Rollon
gouverna long-temps et parfaitement en paix le duché que Dieu lui
avait confié.
[p. 58]

CHAPITRE XXI.

De deux chevaliers du roi Chartes, que le duc fit punir.

CHARLES-LE-SIMPLE, fils de Louis, surnommé le Fainéant et beau-père


de Rollon, envoya une certaine fois deux chevaliers à sa fille Gisèle.
Celle-ci les fit demeurer long-temps et en secret auprès d’elle, ne
voulant pas les présenter à Rollon. Mais celui-ci en ayant été
informé, rempli de fureur et les prenant pour des espions, ordonna
de les faire sortir, et, les ayant fait sortir, les fit mettre à mort sur la
place du marché. Robert, duc des Francs, et parrain de Rollon,
apprenant que la mort de ces deux chevaliers avait détruit et rompu
les liens de paix qui unissaient le roi et Robert duc de Normandie, se
révolta contre le roi, envahit le royaume de France, et reçut l’onction
comme roi, le vingt-neuvième jour de juin. Mais avant la fin de
l’année, Charles livra bataille, à Soissons, à celui qui avait usurpé son
royaume, et l’ayant vaincu avec le secours de Dieu, il le fit périr.
Tandis qu’il revenait vainqueur de cette guerre, le très-méchant
comte Héribert se porta à sa rencontre; sous une fausse apparence
de paix, il l’engagea à se détourner de son chemin et à se rendre au
château de Péronne pour y loger; et l’ayant pris ainsi par artifice, il
le retint captif en ce lieu jusqu’à sa mort. Le duc Robert avait pour
femme la sœur d’Héribert, dont il avait un fils qui était Hugues-le-
Grand. Or Charles, lorsqu’il eut été fait prisonnier, éleva au trône de
France, de l’avis [p. 59] des grands, Raoul, noble fils de Richard, duc
de Bourgogne, qu’il avait tenu sur les fonts de baptême. Ogive,
femme de Charles et fille d’Elstan roi des Anglais, effrayée des
malheurs de son époux, se réfugia en Angleterre auprès de son
père, avec son fils Louis, redoutant excessivement l’inimitié de
Héribert et de Hugues-le-Grand.

CHAPITRE XXII.

Comment le duc, après que sa femme fut morte sans lui laisser d’enfans, s’unit de
nouveau avec Popa, qu’il avait eue pour femme avant son baptême, et mourut
après avoir fait prêter serment de fidélité à son fils Guillaume par les Normands
et les Bretons.

OR le duc Rollon, également appelé Robert, après que sa femme


fut morte sans lui laisser d’enfans, rappela et épousa de nouveau
Popa, qu’il avait répudiée et dont il avait eu un fils nommé
Guillaume, lequel était déjà grand. Cependant le duc, perdant ses
forces, épuisé par les travaux et les guerres auxquels il avait
consacré toute la vigueur de sa jeunesse, délibérait déjà sur les
moyens de disposer de son duché, et cherchait avec la plus grande
attention à qui et de quelle manière il le laisserait après lui. Ayant
donc convoqué les grands de toute la Normandie et les Bretons Alain
et Béranger, il leur présenta son fils Guillaume, brillant de tout l’éclat
de la plus belle jeunesse, leur ordonnant de l’élire pour leur seigneur
et de le mettre à la tête de leur chevalerie. « C’est à [p. 60] moi, leur
dit-il, de me faire remplacer par lui, à vous de lui demeurer fidèles. »
En outre, leur adressant à tous des paroles douces et persuasives, il
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.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebooknice.com

You might also like