Ebook PDF Etextbook PDF For Murachs Java Programming 5Th Edition by Joel Murach Full Chapter

Download as pdf or txt
Download as pdf or txt
You are on page 1of 62

(eTextbook PDF) for Murach■s Java

Programming 5th Edition by Joel


Murach
Visit to download the full and correct content document:
https://ebookmass.com/product/etextbook-pdf-for-murachs-java-programming-5th-edit
ion-by-joel-murach/
Expanded contentsvii

Expanded contents
Section 1 Essential skills

Chapter 1 An introduction to Java


An overview of Java............................................................................4
Java timeline....................................................................................................................4
Java editions .................................................................................................................... 4
How Java compares to C++ and C#................................................................................6

Types of Java applications ................................................................8


Two types of desktop applications .................................................................................. 8
Web applications and mobile apps................................................................................10

An introduction to Java development.............................................12


The code for a console application................................................................................12
How Java compiles and interprets code ........................................................................ 14
An introduction to Java IDEs........................................................................................16

How to use NetBeans to work with existing projects ................... 18


An introduction to NetBeans.........................................................................................18
How to open, close, and delete a project.......................................................................20
How to compile and run a project.................................................................................20
How to use the Output window with a console application..........................................22
How to work with two or more projects........................................................................24

How to use NetBeans to develop new projects.............................26


How to create a new project..........................................................................................26
How to work with Java source code and files ............................................................... 28
How to use the code completion feature.......................................................................30
How to detect and correct syntax errors........................................................................32

Chapter 2 How to write your first Java applications


Basic coding skills............................................................................38
How to code statements.................................................................................................38
How to code comments.................................................................................................38
How to create identifiers ...............................................................................................40
How to declare a class and a main method ................................................................... 42

How to work with numeric variables...............................................44


How to declare and initialize variables ......................................................................... 44
How to code assignment statements..............................................................................44
How to code arithmetic expressions..............................................................................46

How to work with string variables...................................................48


How to create a String object........................................................................................48
How to join and append strings.....................................................................................48
How to include special characters in strings.................................................................50

How to use classes, objects, and methods ...................................52


How to import classes................................................................................................... 52
How to create objects and call methods........................................................................54
How to view the API documentation ............................................................................56

How to use the console for input and output ................................58


How to print output to the console................................................................................58
How to read input from the console..............................................................................60
Examples that getinput from the console.....................................................................62
viii Expanded contents

How to code simple control statements.........................................64


How to compare numeric variables...............................................................................64
How to compare string variables...................................................................................64
How to code if/else statements......................................................................................66
How to code while statements.......................................................................................68

Two illustrative applications............................................................70


The Invoice application.................................................................................................70
The Test Score application ............................................................................................ 72

How to test and debug an application ............................................ 74


How to test an application.............................................................................................74
How to debug an application.........................................................................................74

Chapter 3How to work with the primitive data types


Basic skills for working with data ...................................................82
The eight primitive data types.......................................................................................82
How to declare and initialize variables ......................................................................... 84
How to declare and initialize constants.........................................................................86

How to code arithmetic expressions ..............................................88


How to use the binary operators....................................................................................88
How to use the unary operators.....................................................................................90
How to use the compound assignment operators..........................................................92
How to work with the order of precedence...................................................................94
How to work with casting .............................................................................................96
How to use the Java Shell to test code ..........................................................................98

How to use Java classes to work with numbers..........................100


How to use the Integer and Double classes.................................................................100
How to use the Math class...........................................................................................102
How to use the NumberFormat class ..........................................................................104
The Invoice application with formatting.....................................................................106
How to debug a rounding error ...................................................................................108

How to use the BigDecimal class.................................................. 110


The constructors and methods.....................................................................................110
Examples that work with the BigDecimal class..........................................................112
The Invoice application with BigDecimal objects ...................................................... 114

Chapter 4How to code control statements


How to code Boolean expressions ............................................... 120
How to compare primitive data types..........................................................................120
How to use the logical operators.................................................................................122

How to code if/else and switch statements ................................. 124


How to code if/else statements....................................................................................124
How to code switch statements...................................................................................128
The Invoice application with a switch statement ........................................................132

How to code loops..........................................................................134


How to code while loops.............................................................................................134
How to code do-while loops........................................................................................136
How to code for loops.................................................................................................138
The Future Value application ......................................................................................140
How to code nested loops............................................................................................142

How to code break and continue statements .............................. 144


How to code break statements.....................................................................................144
How to code continue statements................................................................................144
The Guess the Number application.............................................................................146
Expanded contentsix

Chapter 5 How to code methods, handle exceptions,


and validate data
How to code and call static methods............................................152
How to code static methods ........................................................................................152
How to call static methods .......................................................................................... 152
The Future Value application with a static method ..................................................... 154
The Guess the Number application with static methods.............................................156

How to handle exceptions..............................................................158


How exceptions work..................................................................................................158
How to catch exceptions .............................................................................................160
The Future Value application with exception handling...............................................162

How to validate data ....................................................................... 164


How to prevent exceptions from being thrown ........................................................... 164
How to validate a single entry.....................................................................................166
How to code a method that validates an entry.............................................................168

The Future Value application with data validation ...................... 170


The console .................................................................................................................170
The code......................................................................................................................172

Chapter 6 How to test, debug, and deploy an application


Basic skills for testing and debugging.........................................180
Typical test phases.......................................................................................................180
The three types of errors .............................................................................................180
Common Java errors....................................................................................................182
A simple way to trace code execution.........................................................................184

How to use NetBeans to debug an application ...........................186


How to set and remove breakpoints ............................................................................ 186
How to step through code............................................................................................188
How to inspect variables .............................................................................................188
How to inspect the stack trace.....................................................................................190

How to deploy an application ........................................................ 192


An introduction to deployment ...................................................................................192
How to create an executable JAR file..........................................................................194
How to deploy the files for an application ..................................................................196
How to run a GUI application.....................................................................................196
How to run a console application................................................................................198

Section 2 Object-oriented programming


Chapter 7 How to define and use classes
An introduction to classes.............................................................208
How classes can be used to structure an application...................................................208
How encapsulation works ...........................................................................................210
The relationship between a class and its objects.........................................................212

How to work with a class that defines an object ......................... 214


How to use NetBeans to create a new class ................................................................ 214
The Product class ........................................................................................................216
How to code instance variables...................................................................................218
How to code constructors............................................................................................220
How to code methods..................................................................................................222
How to create an object from a class...........................................................................224
x Expanded contents

How to call the methods of an object..........................................................................226


How to use NetBeans to work with classes.................................................................228

How to code and use static fields and methods .........................230


How to code static fields and methods........................................................................230
How to call static fields and methods..........................................................................232
How to code a static initialization block.....................................................................234
When to use static fields and methods ........................................................................234

The Product Viewer application ....................................................236


The ProductDB class...................................................................................................236
The user interface and the ProductApp class .............................................................. 238

More skills for working with objects and methods .....................240


Reference types compared to primitive types ............................................................. 240
How to overload methods............................................................................................242
How to use the this keyword ....................................................................................... 244

The Line Item application...............................................................246


The user interface........................................................................................................246
The class diagram........................................................................................................246
The code for the classes ..............................................................................................248

Chapter 8How to work with inheritance


An introduction to inheritance ......................................................260
How inheritance works................................................................................................260
How the Object class works........................................................................................262

Basic skills for working with inheritance .....................................264


How to create a superclass .......................................................................................... 264
How to create a subclass .............................................................................................266
How polymorphism works..........................................................................................268

The Product application.................................................................270


The console .................................................................................................................270
The Product, Book, and Software classes ................................................................... 272
The ProductDB class...................................................................................................272
The ProductApp class .................................................................................................276

More skills for working with inheritance ......................................278


How to cast objects .....................................................................................................278
How to compare objects..............................................................................................280

How to work with the abstract and final keywords .....................282


How to work with the abstract keyword......................................................................282
How to work with the final keyword...........................................................................284

Chapter 9How to define and use interfaces


An introduction to interfaces.........................................................292
A simple interface ....................................................................................................... 292
Interfaces compared to abstract classes.......................................................................294

Basic skills for working with interfaces .......................................296


How to code an interface.............................................................................................296
How to implement an interface ................................................................................... 298
How to inherit a class and implement an interface .....................................................300
How to use aninterface as a parameter.......................................................................302
How to use inheritance with interfaces ....................................................................... 304
How to use NetBeans to work with interfaces ............................................................ 306
Expanded contentsxi

New features for working with interfaces ....................................308


How to work with default methods.............................................................................308
How to work with static methods................................................................................310

The Product Viewer application .................................................... 312


The console .................................................................................................................312
The ProductReader interface.......................................................................................312
The ProductDB class...................................................................................................312
The ProductApp class .................................................................................................314

How to implement the Cloneable interface..................................316


A Product class that implements the Cloneable interface...........................................316
A LineItem class that implements the Cloneable interface.........................................318

Chapter 10 More object-oriented programming skills


How to work with packages...........................................................324
An introduction to packages........................................................................................324
How to work with packages........................................................................................326
How to work with libraries..........................................................................................328

How to work with modules.............................................................330


An introduction to the module system ........................................................................ 330
How to create modules................................................................................................332
How to use modules....................................................................................................334

How to use javadoc to document a package ...............................336


How to add javadoc comments to a class....................................................................336
How to use HTML and javadoc tags in javadoc comments........................................338
How to generate documentation..................................................................................340
How to view the documentation for a package...........................................................340

How to work with enumerations....................................................342


How to declare an enumeration...................................................................................342
How to use an enumeration.........................................................................................342
How to enhance an enumeration.................................................................................344
How to work with static imports.................................................................................344

Section 3 More essential skills


Chapter 11 How to work with arrays
Basic skills for working with arrays..............................................354
How to create an array ................................................................................................354
How to assign values to the elements of an array .......................................................356
How to use for loops with arrays ................................................................................358
How to use enhanced for loops with arrays ................................................................ 360

How to use the Arrays class ..........................................................362


How to fill, sort, and search arrays..............................................................................362
How to refer to, copy, and compare arrays..................................................................364
How to implement the Comparable interface .............................................................366
The Number Cruncher application..............................................................................368

How to work with two-dimensional arrays...................................370


How to work with rectangular arrays..........................................................................370
How to work with jagged arrays ................................................................................. 372
xii Expanded contents

Chapter 12How to work with collections and generics


An introduction to collections ......................................................380
A comparison of arrays and collections......................................................................380
An overview of the Java collection framework...........................................................382
An introduction to generics.........................................................................................384

How to work with an array list .......................................................386


How to create an array list...........................................................................................386
How to add and get elements ...................................................................................... 388
How to replace, remove, and search for elements.......................................................390
How to store primitive types in an array list ............................................................... 392

The Invoice application ..................................................................394


The console .................................................................................................................394
The Invoice class.........................................................................................................396
The InvoiceApp class .................................................................................................. 398

How to work with alinked list........................................................400


How to create alinked list and add and get elements .................................................400
How to replace, remove, and search for elements.......................................................402
How to use the methods of the Queue and Deque interfaces......................................404
A class that uses generics and a linked list to define a queue ..................................... 406

How to work with maps ..................................................................408


The HashMap and TreeMap classes............................................................................408
Code examples that work with maps...........................................................................410
The Word Counter application .................................................................................... 412

Chapter 13How to work with strings


How to work with the String class.................................................420
How to create strings...................................................................................................420
How to join strings......................................................................................................420
How to append data to a string....................................................................................420
How to compare strings...............................................................................................422
How to work with string indexes ................................................................................424
How to modify strings.................................................................................................426

How to work with the StringBuilder class....................................428


How to create a StringBuilder object..........................................................................428
How to append data to a string....................................................................................428
How to modify strings.................................................................................................430

The Product Lister application......................................................432


The user interface........................................................................................................432
The StringUtil class.....................................................................................................432
The ProductListerApp class........................................................................................434

Chapter 14How to work with dates and times


An introduction to date/time APIs ................................................440
The date/time API prior to Java 8................................................................................440
The date/time API for Java 8 and later ........................................................................ 440

How to use the new date/time API................................................442


How to create date and time objects............................................................................442
How to get date and time parts....................................................................................444
How to compare dates and times.................................................................................446
How to adjust dates and times.....................................................................................448
How to add or subtract a period of time......................................................................450
How to get the time between two dates.......................................................................450
How to format dates and times....................................................................................452
An Invoice class that includes an invoice date............................................................454
Expanded contentsxiii

Chapter 15 How to work with file I/O


Introduction to directories and files .............................................460
A package for working with directories andfiles .......................................................460
Code examples that work with directories andfiles....................................................462

Introduction to file I/O ....................................................................464


How files and streams work ........................................................................................ 464
Afile I/O example.......................................................................................................466
How to work with I/O exceptions ............................................................................... 468

How to work with text files.............................................................470


How to connect a character output stream to afile ..................................................... 470
How to write to a text file............................................................................................472
How to connect a character input stream to afile ....................................................... 474
How to read from a text file ........................................................................................476
Two interfaces for data access.....................................................................................478
A class that works with atext file ...............................................................................480

The Product Manager application.................................................484


The console .................................................................................................................484
The ProductManagerApp class ................................................................................... 484

How to work with binary files ........................................................488


How to connect a binary output stream to afile..........................................................488
How to write to a binary file........................................................................................490
How to connect a binary input stream to afile............................................................492
How to read from a binary file .................................................................................... 494
A class that works with a binary file ........................................................................... 494

Chapter 16 How to work with exceptions


An introduction to exceptions.......................................................502
The exception hierarchy..............................................................................................502
How exceptions are propagated ..................................................................................504

How to catch exceptions................................................................506


How to use the try statement.......................................................................................506
How to use the try-with-resources statement..............................................................508
How to use the methods of an exception.....................................................................510
How to use a multi-catch block...................................................................................512

How to throw exceptions ............................................................... 514


How to use the throws clause......................................................................................514
How to use the throw statement .................................................................................. 516

How to work with custom exceptions...........................................518


How to create a custom exception class......................................................................518
How to use exception chaining ...................................................................................520
An interface that uses custom exceptions ...................................................................522
A class that uses custom exceptions............................................................................522

Section 4 GUI programming


Chapter 17 How to get started with JavaFX
An introduction to GUI programming...........................................532
A GUI that displays ten controls.................................................................................532
A summary of GUI APIs.............................................................................................532
The inheritance hierarchy for JavaFX nodes...............................................................534

How to create a GUI that accepts user input ...............................536


How to create and display a window...........................................................................536
How to work with labels .............................................................................................538
xiv Expanded contents

How to set alignment and padding..............................................................................540


How to work with text fields.......................................................................................542
How to set column widths...........................................................................................544

How to create a GUI that handles events .....................................546


How to work with buttons and boxes..........................................................................546
How to handle action events .......................................................................................548

The Future Value application.........................................................550


The user interface........................................................................................................550
The code......................................................................................................................550

How to validate user input .............................................................554


How to display an error message in a dialog box .......................................................554
How to validate the data entered into a text field........................................................556
The Validation class.....................................................................................................558
How to validate multiple entries .................................................................................560

How to get started with FXML .......................................................562


An introduction to XML .............................................................................................562
How to code an FXML application.............................................................................564
How to create the files for an FXML application........................................................564

The Future Value application with FXML......................................566


The FXML file ............................................................................................................566
The controller class ..................................................................................................... 568
The application class...................................................................................................568

Chapter 18How to get started with Swing


An introduction to GUI programming ........................................... 574
A user interface with ten controls ...............................................................................574
A summary of GUI APIs.............................................................................................574
The inheritance hierarchy for Swing components ......................................................576

How to create a GUI that handles events .....................................578


How to display a frame ...............................................................................................578
How to set the look and feel........................................................................................580
How to work with panels ............................................................................................582
How to work with buttons...........................................................................................582
How to handle action events .......................................................................................584
How to work with labels .............................................................................................586
How to work with text fields.......................................................................................588

How to work with layout managers...............................................590


A summary of layout managers ..................................................................................590
How to use the FlowLayout manager..........................................................................592
How to use the BorderLayout manager.......................................................................594
How to use the GridBagLayout manager....................................................................596
How to add padding to a GridBagLayout ...................................................................598
How to solve a common problem with the GridBagLayout .......................................600

The Future Value application.........................................................602


The user interface........................................................................................................602
The code......................................................................................................................602

How to validate Swing input data..................................................608


How to display a dialog box........................................................................................608
How to validate the data entered into a text field........................................................610
The Validation class.....................................................................................................612
How to validate multiple entries .................................................................................614
Expanded contentsxv

Chapter 19 More Swing controls


More skills for working with controls ...........................................620
How to work with text areas........................................................................................620
How to add scroll bars.................................................................................................620
How to work with check boxes...................................................................................622
How to work with radio buttons..................................................................................624
How to add a border and title......................................................................................626
How to work with combo boxes..................................................................................628
How to work with lists ................................................................................................ 630
How to work with list models ..................................................................................... 632

The Payment application................................................................634


The user interface........................................................................................................634
The code......................................................................................................................636

Section 5 Database programming


Chapter 20 An introduction to databases with SQLite
How a relational database is organized .......................................650
How atable is organized ............................................................................................. 650
How the columns in a table are defined ...................................................................... 650
How tables are related.................................................................................................652

How to use SQL to work with a database.....................................654


How to query a single table.........................................................................................654
How to join data from two or more tables ..................................................................656
How to add, update, and delete data in a table............................................................658

How to use SQLite Manager ..........................................................660


An introduction to SQLite...........................................................................................660
How to connect to a SQLite database .........................................................................662
How to work with a SQLite database..........................................................................662
How to execute SQL statements .................................................................................664
How to create a SQLite database ................................................................................666

Chapter 21 How to use JDBC to work with a database


An introduction to database drivers.............................................672
Four types of JDBC database drivers..........................................................................672
How to download a database driver ............................................................................672
How to add a database driver to a project ................................................................... 674

How to work with a database.........................................................676


How to connect to a database......................................................................................676
How to return a result set and move the cursor through it .......................................... 678
How to get data from a result set.................................................................................680
How to insert, update, and delete data ........................................................................682
How to work with prepared statements.......................................................................684

A class for working with databases..............................................686


The DAO interface ......................................................................................................686
The ProductDB class...................................................................................................686
Code that uses the ProductDB class............................................................................692
xviExpanded contents

Section 6 Advanced skills


Chapter 22 How to work with lambda expressions and streams
How to work with lambda expressions.........................................700
Anonymous classes compared to lambdas..................................................................700
Pros and cons of lambda expressions..........................................................................700
A method that doesnt use lambdas.............................................................................702
A method that uses lambdas........................................................................................704
The syntax of alambda expression ............................................................................. 706

How to use functional interfaces from the Java API...................708


How to use the Predicate interface..............................................................................708
How to use the Consumer interface ............................................................................710
How to use the Function interface...............................................................................712
How to work with multiple functional interfaces........................................................714

How to work with streams..............................................................716


How to filter a list........................................................................................................716
How to map alist ........................................................................................................718
How to reduce a list.....................................................................................................720

Chapter 23 How to work with threads


An introduction to threads.............................................................726
How threads work .......................................................................................................726
Typical usesfor threads...............................................................................................726
Classes and interfaces for working with threads.........................................................728
The life cycle of a thread.............................................................................................730

Two ways to create threads ...........................................................732


Constructors and methods of the Thread class............................................................732
How to extend the Thread class ..................................................................................734
How to implement the Runnable interface..................................................................736
How to synchronize threads..........................................................738
How to use synchronized methods..............................................................................738
When to use synchronized methods............................................................................738

Appendix A How to set up Windows for this book


How to install the JDK and NetBeans.........................................................................744
How to install the source code for this book...............................................................746
How to install Eclipse .................................................................................................748
How to install SQLite Manager ..................................................................................750

Appendix B How to set up Mac OS X for this book


How to install the JDK and NetBeans.........................................................................754
How to install the source code for this book...............................................................756
How to install Eclipse .................................................................................................758
How to install SQLite Manager ..................................................................................760
Introduction xvii

Introduction
Sinceits release in 1996, the Javalanguage has established itself as one of
the leading languages for object-oriented programming. Today, Java continues to
be one of the most popular languages for application development, especially for
weband mobile applications, like Android apps. Andthats going to continue for
many yearsto come, for several reasons.
First, developers can obtain Java and a wide variety of tools for working
with Java for free. Second, Java code can run on any modern operating system.
Third, Java is used by many of the largest enterprises in the world. Fourth, Javas
development hasalways been guided by the Java community. As aresult, the
Java platform is able to evolve according to the needs of the programmers who
usethe language.

Whothis book is for


This book is for anyone who wants to learn the core features of the Java
language. It works if you have no programming experience at all. It works if you
have programming experience with another language. It works if you already
know an older version of Java and you want to get up-to-speed with the latest
version. And it works if youve already read three or four other Java books and
still dont know how to develop a real-world application.
If youre completely new to programming, the prerequisites are minimal.
You just need to be familiar with the operation of the platform that youre using
(like Windows, Mac OS X, or Linux) so you can perform tasks like opening,
saving, printing, closing, copying, and deleting files.

What version of Java this book supports


This book shows how to useJava SE 9, whichincludes JDK (Java
Development Kit) 9. However, since all versions of Java are backwards
compatible, the code and skills presented in this book will work with later
versions too. Besidesthat, this book clearly identifies whenJavaintroduced its
mostrecent features. That way,you can avoid these features if you want your
code to work with earlier versions of Java.
xviii Introduction

WhatIDEs this book supports


This book supports two of the mostpopular IDEs (Integrated Development
Environments) for working with Java, NetBeans and Eclipse. Both of these IDEs
are available for free and run on all operating systems.
To support both IDEs, the printed pagesshow how to use NetBeans, and the
download for this book includes a PDFfile that shows how to use Eclipse. In
addition, this download includes the source code for this book formatted for both
NetBeansand Eclipse. As a result, its easy to use either IDE withthis book.

How to get the software you need


You can download all of the software that you need for this book for free
from the Internet. To makethat easier for you, appendix A shows how to
download and install this software on Windows, and appendix B shows how to
download and install this software on Mac OS X.

How this book helps you learn


Like all our books, this one hasfeatures that you wont find in competing
books. Thats why we believe that youll learn faster and better with our book
than with any other. Herearejust some of those features.
Unlike many Java books, this book shows you how to use an IDE to develop
Java applications. Thats how Java programming is done in the real world,
and that by itself will help you learn faster.
Unlike many Java books, this one focuses on the Java features that you will
useevery day. As aresult, it doesnt waste your time by presenting features
that you probably wont ever need.
To help you learn how to develop applications at a professional level,
this book presents complete, non-trivial applications. For example,
chapter 15 presents a Product Manager application that uses presentation
classes, business classes, and database classesto implement the three-tier
architecture. You wont find complete, real-world applications like this in
other Java books, even though studying these types of applications is the
best way to master Java development.
The exercises at the end of each chapter give you a chance to try out what
youve just learned. They guide you through the development of some
applications, and they challenge you to apply what youve learned in
new ways. As a result, youll gain valuable, hands-on experience in Java
programming that will build your skills and your confidence.
All of the information in this book is presented in our unique paired-pages
format, withthe essential syntax, guidelines, and examples onthe right page
and the perspective and extra explanation on the left page. This helps you
learn more while reading less, and it helps you quickly find the information
that you need when you use this book for reference.
Introductionxix

How our downloadable files help you learn


If you goto our website at www.murach.com, you can download all thefiles
that you need for getting the mostfrom this book, in both NetBeans and Eclipse
format. Thesefiles include:
All of the applications presented in this book
The starting code for the exercises that are at the end of each chapter
The solutions to the exercises
Thesefiles let you test, review, and copy the code. In addition, if you have any
problems with the exercises, the solutions are there to help you over the learning
blocks, which is an essential part of the learning process. For moreinformation
on downloading and installing these files, please see appendix A(Windows) or
appendix B (Mac OS X).

Support materials for instructors and trainers


If youre a college instructor or corporate trainer who wouldlike to usethis
book as a course text, we offer afull set of the support materials you need for a
turnkey course. Thatincludes:
Instructional objectives that help your students focus on the skills that they
need to develop
Dozens of projects that let your students prove how well they have mastered
those skills
Test banksthat let you measurehow well your students have masteredthose
skills
A complete set of PowerPoint slides that you can use to review and
reinforce the content of the book
To learn more about our instructors materials, please go to our website at
www.murachforinstructors.com if youre an instructor. Orif youre a trainer,
please go to www.murach.com and click on the Courseware for Trainers link, or
contact Kelly at 1-800-221-5528 or [email protected].

Companion books
When youfinish this book, youll have all of the Java skills that you need
for moving on to web or mobile programming with Java. Then, if you want to
move on to web programming, Murachs Java Servlets and JSP will show you
how to use Java servlets and Java Server Pages to develop professional web
applications. Or,if you want to move on to Android programming, Murachs
Android Programming will get you started with that.
xx Introduction

Please let us know what you think of this book


When westarted thefirst edition of this book, our goals were(1) to teach
you Java as quickly and easily as possible and (2) to teach you the practical
Java concepts and skills that you needfor developing real-world business
applications. Wevetried to improve onthat with each subsequent edition, and as
this 5th edition goesto press, we hope that the book is moreeffective than ever
before. Many of the improvements have come from the feedback weve received
from our readers, so if you have any comments about this book, we would
appreciate hearing from you at [email protected].
Thanks for buying this book. Wehope you enjoy reading it, and we wish you
great success with your Java programming.

Joel MurachAnne Boehm


AuthorEditor
Section
1

Essential skills
This section gets you started quickly with Java programming. First, chapter
1introduces you to Java applications and shows you how to use an IDE
to work with Java projects. Then, chapter 2 shows you how to write your
first Java applications. When you complete these chapters, youll be able to
write, test, and debug simple applications of your own.
After that, chapter 3 presents the details for working with the eight
primitive data types. Chapter 4 presents the details for coding control
statements. Chapter 5 shows how to code methods, handle exceptions, and
validate data. And chapter 6 shows how to thoroughly test and debug an
application. In addition, it shows how to deploy an application.
These are the essential skills that youll use in almost every Java
application that you develop. When youfinish these chapters, youll be able
to write solid programs of your own. And youll have the background that
you need for learning how to develop object-oriented programs.
1
Anintroduction to Java
This chapter starts by presenting some background information about Java.
This information isnt essential to developing Java applications, so you
can skim it if you want. However, it does show how Java works and how it
compares to other languages.
After the background information, this chapter shows how to use the
NetBeans IDE (Integrated Development Environment) to work with a Java
application. For this book, we recommend using NetBeans because wethink
its the best and mostintuitive IDE for getting started with Java.
However, Eclipse is another great IDE for working with Java
applications, and many programmers prefer it. As a result, the download for
this book includes a PDFfile that shows how to use Eclipse with this book
instead of NetBeans. So, if you want to use Eclipse, you can use this PDFfile
whenever you need to learn how to perform atask with Eclipse.

An overview of Java ...............................................................4


Java timeline ....................................................................................................4
Java editions.....................................................................................................4
How Java compares to C++ and C#................................................................6

Types of Java applications....................................................8


Two types of desktop applications...................................................................8
Web applications and mobile apps ................................................................10

An introduction to Java development................................12


The code for a console application ................................................................12
How Java compiles and interprets code ........................................................14
An introduction to Java IDEs ........................................................................16

How to use NetBeans to work with existing projects.......18


An introduction to NetBeans.........................................................................18
How to open, close, and delete a project .......................................................20
How to compile and run a project .................................................................20
How to use the Output window with a console application ..........................22
How to work with two or more projects ....................................................... 24

How to use NetBeans to develop new projects ................26


How to create a new project ..........................................................................26
How to work with Java source code and files................................................28
How to use the code completion feature .......................................................30
How to detect and correct syntax errors........................................................32

Perspective ...........................................................................34
4 Section 1Essential Java skills

An overview of Java
In 1996, Sun Microsystems released a new programming language called
Java. Today, Java is owned by Oracle and is one of the most widely used
programming languages in the world.

Java timeline
Figure 1-1 starts by describing all major releases of Java starting with
version 1.0 and ending with version 1.9. Throughout Javas history, the terms
Java Development Kit (JDK) and Software Development Kit (SDK) have been
used to describe the Java toolkit. In this book, well use the term JDK since its
the most current and commonly used term.
In addition, different numbering schemes have been used to indicate the
version of Java. For example, Java SE 8 or Java 1.8 both refer to the eighth
major version of Java. Similarly, Java SE 9 and Java 1.9 both refer to the ninth
major version of Java. The documentation for the Java API uses the 1.x style
of numbering. As a result, you should be familiar with it. However, its also
common to only use a single number such as Java 6.
This book shows how to use Java 9. However, Java is backwards compatible,
so future versions of Java should work with this book too. In addition, most of
the skills described in this book have been a part of Java since its earliest
versions. As a result, earlier versions of Java work with most of the skills
described in this book.

Java editions
Thisfigure also describes the three most common editions of Java. To start,
the Standard Edition is known as Java SE. Its designed for general purpose use
on desktop computers and servers, and its the edition that youll learn how to
work with in this book. For example, you can use Java SE to create a desktop
application like the ones presented in section 4.
The Enterprise Edition is known as Java EE. Its designed to develop
distributed applications that run on an intranet or the Internet. You can use Java
EEto create web applications.
The Micro Edition is known as Java ME. Its designed to run on devices that
have limited resources, such as mobile devices, TV set-top boxes, printers, smart
cards, hotel room key cards, and so on.
With some older versions of Java, Java SE was known as J2SE (Java 2
Platform, Standard Edition). Similarly, Java EE was known as J2EE (Java 2
Platform, Enterprise Edition). If you are searching for information about Java on
the Internet, you may come across these terms. However, they arent commonly
used anymore.
Chapter 1An introduction to Java5

Java timeline
YearMonth Release
1996January JDK 1.0
1997February JDK 1.1

1998December SDK 1.2

1999August Java 2 Platform, Standard Edition (J2SE)

December Java 2 Platform, Enterprise Edition (J2EE)

2000May J2SE with SDK 1.3


2002February J2SE with SDK 1.4
2004September J2SE 5.0 with JDK 1.5

2006December Java SE 6 with JDK 1.6

2011July Java SE 7 with JDK 1.7

2014March Java SE 8 with JDK 1.8

2017July Java SE 9 with JDK 1.9

Java editions
Platform Description
Java SE (Standard Edition) For general purpose use on desktop computers and servers. Some
early versions were called J2SE (Java 2 Platform, Standard Edition).
Java EE (Enterprise Edition) For developing distributed applications that run on an intranet or the
Internet. Some early versions were called J2EE (Java 2 Platform,
Enterprise Edition).

Java ME (Micro Edition) For devices with limited resources such as mobile devices, TV set-top
boxes, printers, and smart cards.

Description
The Java Development Kit (JDK) includes a compiler, a runtime environment, and
othertools that you can useto develop Java applications. Some early versions were
called the Software Development Kit (SDK).
Java was originally developed and released by Sun Microsystems. However, Oracle
bought Sun Microsystems in April 2010.

Figure 1-1Java timeline and editions


6 Section 1Essential Java skills

How Java compares to C++ and C#


Figure 1-2 compares Java to C++ and C#. As you can see, Java hassome
similarities and some differences withthese languages.
WhenSuns developers created Java,they tried to keepthe syntax for Java
similar to the syntax for C++. That way,it would be easy for C++ programmers
to learn Java. In addition, they designed Java so its applications can be run on
any computer platform without needing to be compiled for each platform. In
contrast, C++ needsto be compiled for each platform.
Java wasalso designedto automatically handle many operations involving
the allocation and de-allocation of memory. This is a key reason whyits easier
to develop programs and write bug-free code with Javathan with C++.
To provide these features, early versions of Java sacrificed some speed (or
performance) whencompared to C++. However,improvements in later versions
of Java have greatly improved Javas speed. Now, Java runs faster than C++in
some contexts, and its performance is adequatein mostcontexts.
When Microsofts developers created C#,they used many of the bestideas
of Java. Like Java, C# uses a syntax thats similar to C++.In addition, C#
handles memory operations automatically.
C# can run on any platform that hasa runtime environment for it. However,
Windowsis the only operating system that fully supports aruntime environment
for C#. As a result, C#is primarily usedfor developing applications that only
needto run on Windows.
Java runs faster than C#in mostcontexts. However,the performance of C#
is adequatein mostcontexts.
Chapter 1 An introduction to Java7

Operating systems that support Java


Windows
Mac OS X
Linux
Mostversions of UNIX
Mostother modern operating systems

A note about Android


The Android operating system doesnt support Java in the same way as most
operating systems. However, you can use all Java 7 language features and some
Java 8 features to writethe code for Android apps.

Java compared to C++


Feature Description
Syntax Java syntax is similar to C++ syntax.

Platforms Compiled Java code can run on any platform that has a
Java runtime environment. C++ code must be compiled
once for each type of system that it is going to be run on.
Speed C++ runs faster than Java in some contexts, but Java runs
faster in other contexts.

Memory Java handles most memory operations automatically, but


C++ programmers must write code that manages memory.

Java compared to C#
Feature Description
Syntax Java syntax is similar to C# syntax.

Platforms Like Java, compiled C# code can run on any platform that
has a runtime environment for it.
Speed Java runs faster than C#in mostcontexts.
Memory Like Java, C# handles most memory operations automatically.

Figure 1-2How Java compares to C++ and C#


8 Section 1Essential Java skills

Types of Java applications


You can use Java to write almost any type of application (also known as an
app or a program). In this book, youll learn how to develop desktop applications.
However, you can also use Java to develop web applications and mobile apps.

Two types of desktop applications


Figure 1-3 shows two types of desktop applications that you can create with
Java. This type of application runs directly on your computer.
The easiest type of desktop application to create is known as a console
application. This type of application runs in the console, or command prompt,
thats available from your operating system. The console provides an easy way
to get input from the user and to display output to the user. In this figure, for
example, I entered three values in the console application, and the application has
performed a calculation and displayed the result. When youre learning Java, its
common to work with console applications until you have a solid understanding
of the Java language.
Once you have a solid understanding of the Java language, you can create a
desktop application that uses a graphical user interface (GUI). In this figure, for
example, the GUI application performs the same tasks as the console application.
In other words, it gets the same input from the user, performs the same
calculation, and displays the same result. However, the GUI application is more
user-friendly and intuitive.
Since developing the GUI for an application requires some significant Java
coding skills, this book doesnt present a GUI application until section 4. Until
then, this book uses console applications to teach the basics of Java.
Chapter 1An introduction to Java9

A console application

A GUI application

Description
A console application uses the console to interact with the user.
A GUI application uses a graphical user interface to interact with the user.

Figure 1-3Two types of desktop applications


10 Section 1Essential Java skills

Webapplications and mobile apps


In the early days of Java, which werealso the early days of the Internet, one
of the mostexciting features of Java wasthat you could useit to create a special
type of web-basedapplication known as an applet. An applet could be stored in
an HTML page and run inside a Java-enabled browser. Withtightening security
restrictions in recent years, applets are effectively obsolete. As aresult, we dont
cover them in this book.
However, many web applications still rely on servlets. A servlet is a special
type of Java application that runs on the server and can be called by a client such
as a web browser. This is illustrated by thefirst screenin figure 1-4. To start,
whenthe user clicks the Calculate button, the web browser onthe client sends
arequest to the servlet thats running onthe server. This request includes the
userinput. Whenthe servlet receives this request, it performs the calculation and
returns the result to the browser,typically in the form of an HTML page.
In this figure, the servlet doesnt access a database. However,its common
for servlets to work with a database. For example, suppose a browser requests a
servlet that displays all unprocessed invoices that are stored in a database. Then,
whenthe servlet is executed, it reads datafrom the database,formats that data
within an HTML page, and returns the HTML pageto the browser.
Whenyou create a servlet-based application like the one shown here, all
the processing takes place onthe server and only HTML, CSS,and JavaScript
is returned to the browser. That meansthat anyone with an Internet or intranet
connection, a web browser, and adequate security clearance can access and run a
servlet-based application. To makeit easy to store the results of a servlet within
an HTML page,the Java EE specification provides for JavaServer Pages (JSPs).
As aresult, its common to useJSPs with servlets.
You can also use Javato develop mobile apps, which are applications that
run on a mobile device such as a smartphone or tablet. In particular, Java is
commonly usedto writethe code for appsthat run on Android devices. For
example, thisfigure shows a mobile app that was developed with Java.
An app works muchlike atraditional application. However,the user
interface hasto be modified so that its appropriate for a mobile device. In this
figure, for example, the userinterface has been modified to work with a
touch-screen device that has a small screen and no keyboard. As aresult, the user
can usethe keypad thats displayed onscreento enter numbers and can pressthe
Done button onthis keypad to perform the calculation.
The Android operating system includes its own virtual machinethat supports
a subset of Java,including all features of Java 7 and some features of Java 8. As
aresult, if you useJava to develop Android apps, you cant use all of the features
of Java, especially the newest ones. Thats becausethe Android virtual machine
is not a Java virtual machine.In other words,the Android virtual machinecant
run compiled Java code, and a Java virtual machine cant run compiled Android
code. Still, you can use mostfeatures of Javato write code for Android apps, and
its easy enough to compile that code so the Android virtual machine can run it.
Chapter 1An introduction to Java11

A web application

A mobile app

Description
An applet is a type of Java application that runs within a web browser. In the past,
it was possible to run applets in most web browsers. Today, fewer and fewer web
browsers support applets, so they are effectively obsolete.
A servlet is atype of Java application that runs on a webserver. Aservlet accepts
requests from clients and returns responses to them. Typically, the clients are web
browsers.
A mobile app uses a mobile device such as a smartphone or tablet to interface with
the user.
The Android operating system supports a subset of Java, including all features of
Java 7 and some features of Java 8.

Figure 1-4Web applications and mobile apps


12 Section 1Essential Java skills

Anintroduction to Java development


At this point, youre ready to see the source code for an application. Youre
ready to learn how Java compiles and interprets this code. And youre ready to
beintroduced to some of the IDEs that you can use to develop this type of code.

The code for a console application


When you develop a Java application, you start by entering and editing the
source code. To give you an idea of how the source code for a Java application
works,figure 1-5 presents the code for the console version of the Future Value
application shown in figure 1-3.
If you have experience with other programming languages, you may be able
to understand much of this code already. If not, dont worry! Youll learn how all
of this code works in the next few chapters. For now, heres a brief explanation
of this code.
Most of the code for this application is stored in a class named
FutureValueApp that corresponds with afile named FutureValueApp.java. This
class begins with an opening brace ({) and ends with a closing brace (}).

Within this class, two methods are defined. These methods also begin with
an opening brace and end with a closing brace, and they are indented to clearly
show that they are contained within the class.
Thefirst method, named main(), is the main method for the application. The
code within this method is executed automatically when you run the application.
In this case, the code prints data to the console to prompt the user, accepts the
data the user enters at the console, and calculates the future value. To do that,
the main() method calls a second method, named calculateFutureValue(). This
method calculates the future value and returns the result to the main() method.
Chapter 1 An introduction to Java13

The code for a console application


import java.text.NumberFormat;
import java.util.Scanner;

public class FutureValueApp {

public static void main(String[] args) {


System.out.println("Welcome to the Future Value Calculator");
System.out.println();

// get a Scanner object to scan for user input


Scanner sc = new Scanner(System.in);

String choice = "y";


while (choice.equalsIgnoreCase("y")) {

// get input from user


System.out.print("Enter monthly investment:");
double monthlyInvestment = sc.nextDouble();

System.out.print("Enter yearly interest rate: ");


double interestRate = sc.nextDouble();

System.out.print("Enter number of years:");


int years = sc.nextInt();

// convert all input values to months


double monthlyInterestRate = interestRate / 12 / 100;
int months = years * 12;

// call method to calculate future value


double futureValue = calculateFutureValue(
monthlyInvestment, monthlyInterestRate, months);

// format and display the result


NumberFormat currency = NumberFormat.getCurrencyInstance();
System.out.println("Future value:"
+ currency.format(futureValue) + "\n");

// see if the user wants to continue


System.out.print("Continue? (y/n): ");
choice = sc.next();
System.out.println();
}
}

private static double calculateFutureValue(double monthlyInvestment,


double monthlyInterestRate, int months) {
double futureValue = 0;
for (int i = 1; i <= months; i++) {
futureValue = (futureValue + monthlyInvestment)
* (1 + monthlyInterestRate);
}
return futureValue;
}
}

Figure 1-5 The code for a console application


Another random document with
no related content on Scribd:
DANCE ON STILTS AT THE GIRLS’ UNYAGO, NIUCHI

Newala, too, suffers from the distance of its water-supply—at least


the Newala of to-day does; there was once another Newala in a lovely
valley at the foot of the plateau. I visited it and found scarcely a trace
of houses, only a Christian cemetery, with the graves of several
missionaries and their converts, remaining as a monument of its
former glories. But the surroundings are wonderfully beautiful. A
thick grove of splendid mango-trees closes in the weather-worn
crosses and headstones; behind them, combining the useful and the
agreeable, is a whole plantation of lemon-trees covered with ripe
fruit; not the small African kind, but a much larger and also juicier
imported variety, which drops into the hands of the passing traveller,
without calling for any exertion on his part. Old Newala is now under
the jurisdiction of the native pastor, Daudi, at Chingulungulu, who,
as I am on very friendly terms with him, allows me, as a matter of
course, the use of this lemon-grove during my stay at Newala.
FEET MUTILATED BY THE RAVAGES OF THE “JIGGER”
(Sarcopsylla penetrans)

The water-supply of New Newala is in the bottom of the valley,


some 1,600 feet lower down. The way is not only long and fatiguing,
but the water, when we get it, is thoroughly bad. We are suffering not
only from this, but from the fact that the arrangements at Newala are
nothing short of luxurious. We have a separate kitchen—a hut built
against the boma palisade on the right of the baraza, the interior of
which is not visible from our usual position. Our two cooks were not
long in finding this out, and they consequently do—or rather neglect
to do—what they please. In any case they do not seem to be very
particular about the boiling of our drinking-water—at least I can
attribute to no other cause certain attacks of a dysenteric nature,
from which both Knudsen and I have suffered for some time. If a
man like Omari has to be left unwatched for a moment, he is capable
of anything. Besides this complaint, we are inconvenienced by the
state of our nails, which have become as hard as glass, and crack on
the slightest provocation, and I have the additional infliction of
pimples all over me. As if all this were not enough, we have also, for
the last week been waging war against the jigger, who has found his
Eldorado in the hot sand of the Makonde plateau. Our men are seen
all day long—whenever their chronic colds and the dysentery likewise
raging among them permit—occupied in removing this scourge of
Africa from their feet and trying to prevent the disastrous
consequences of its presence. It is quite common to see natives of
this place with one or two toes missing; many have lost all their toes,
or even the whole front part of the foot, so that a well-formed leg
ends in a shapeless stump. These ravages are caused by the female of
Sarcopsylla penetrans, which bores its way under the skin and there
develops an egg-sac the size of a pea. In all books on the subject, it is
stated that one’s attention is called to the presence of this parasite by
an intolerable itching. This agrees very well with my experience, so
far as the softer parts of the sole, the spaces between and under the
toes, and the side of the foot are concerned, but if the creature
penetrates through the harder parts of the heel or ball of the foot, it
may escape even the most careful search till it has reached maturity.
Then there is no time to be lost, if the horrible ulceration, of which
we see cases by the dozen every day, is to be prevented. It is much
easier, by the way, to discover the insect on the white skin of a
European than on that of a native, on which the dark speck scarcely
shows. The four or five jiggers which, in spite of the fact that I
constantly wore high laced boots, chose my feet to settle in, were
taken out for me by the all-accomplished Knudsen, after which I
thought it advisable to wash out the cavities with corrosive
sublimate. The natives have a different sort of disinfectant—they fill
the hole with scraped roots. In a tiny Makua village on the slope of
the plateau south of Newala, we saw an old woman who had filled all
the spaces under her toe-nails with powdered roots by way of
prophylactic treatment. What will be the result, if any, who can say?
The rest of the many trifling ills which trouble our existence are
really more comic than serious. In the absence of anything else to
smoke, Knudsen and I at last opened a box of cigars procured from
the Indian store-keeper at Lindi, and tried them, with the most
distressing results. Whether they contain opium or some other
narcotic, neither of us can say, but after the tenth puff we were both
“off,” three-quarters stupefied and unspeakably wretched. Slowly we
recovered—and what happened next? Half-an-hour later we were
once more smoking these poisonous concoctions—so insatiable is the
craving for tobacco in the tropics.
Even my present attacks of fever scarcely deserve to be taken
seriously. I have had no less than three here at Newala, all of which
have run their course in an incredibly short time. In the early
afternoon, I am busy with my old natives, asking questions and
making notes. The strong midday coffee has stimulated my spirits to
an extraordinary degree, the brain is active and vigorous, and work
progresses rapidly, while a pleasant warmth pervades the whole
body. Suddenly this gives place to a violent chill, forcing me to put on
my overcoat, though it is only half-past three and the afternoon sun
is at its hottest. Now the brain no longer works with such acuteness
and logical precision; more especially does it fail me in trying to
establish the syntax of the difficult Makua language on which I have
ventured, as if I had not enough to do without it. Under the
circumstances it seems advisable to take my temperature, and I do
so, to save trouble, without leaving my seat, and while going on with
my work. On examination, I find it to be 101·48°. My tutors are
abruptly dismissed and my bed set up in the baraza; a few minutes
later I am in it and treating myself internally with hot water and
lemon-juice.
Three hours later, the thermometer marks nearly 104°, and I make
them carry me back into the tent, bed and all, as I am now perspiring
heavily, and exposure to the cold wind just beginning to blow might
mean a fatal chill. I lie still for a little while, and then find, to my
great relief, that the temperature is not rising, but rather falling. This
is about 7.30 p.m. At 8 p.m. I find, to my unbounded astonishment,
that it has fallen below 98·6°, and I feel perfectly well. I read for an
hour or two, and could very well enjoy a smoke, if I had the
wherewithal—Indian cigars being out of the question.
Having no medical training, I am at a loss to account for this state
of things. It is impossible that these transitory attacks of high fever
should be malarial; it seems more probable that they are due to a
kind of sunstroke. On consulting my note-book, I become more and
more inclined to think this is the case, for these attacks regularly
follow extreme fatigue and long exposure to strong sunshine. They at
least have the advantage of being only short interruptions to my
work, as on the following morning I am always quite fresh and fit.
My treasure of a cook is suffering from an enormous hydrocele which
makes it difficult for him to get up, and Moritz is obliged to keep in
the dark on account of his inflamed eyes. Knudsen’s cook, a raw boy
from somewhere in the bush, knows still less of cooking than Omari;
consequently Nils Knudsen himself has been promoted to the vacant
post. Finding that we had come to the end of our supplies, he began
by sending to Chingulungulu for the four sucking-pigs which we had
bought from Matola and temporarily left in his charge; and when
they came up, neatly packed in a large crate, he callously slaughtered
the biggest of them. The first joint we were thoughtless enough to
entrust for roasting to Knudsen’s mshenzi cook, and it was
consequently uneatable; but we made the rest of the animal into a
jelly which we ate with great relish after weeks of underfeeding,
consuming incredible helpings of it at both midday and evening
meals. The only drawback is a certain want of variety in the tinned
vegetables. Dr. Jäger, to whom the Geographical Commission
entrusted the provisioning of the expeditions—mine as well as his
own—because he had more time on his hands than the rest of us,
seems to have laid in a huge stock of Teltow turnips,[46] an article of
food which is all very well for occasional use, but which quickly palls
when set before one every day; and we seem to have no other tins
left. There is no help for it—we must put up with the turnips; but I
am certain that, once I am home again, I shall not touch them for ten
years to come.
Amid all these minor evils, which, after all, go to make up the
genuine flavour of Africa, there is at least one cheering touch:
Knudsen has, with the dexterity of a skilled mechanic, repaired my 9
× 12 cm. camera, at least so far that I can use it with a little care.
How, in the absence of finger-nails, he was able to accomplish such a
ticklish piece of work, having no tool but a clumsy screw-driver for
taking to pieces and putting together again the complicated
mechanism of the instantaneous shutter, is still a mystery to me; but
he did it successfully. The loss of his finger-nails shows him in a light
contrasting curiously enough with the intelligence evinced by the
above operation; though, after all, it is scarcely surprising after his
ten years’ residence in the bush. One day, at Lindi, he had occasion
to wash a dog, which must have been in need of very thorough
cleansing, for the bottle handed to our friend for the purpose had an
extremely strong smell. Having performed his task in the most
conscientious manner, he perceived with some surprise that the dog
did not appear much the better for it, and was further surprised by
finding his own nails ulcerating away in the course of the next few
days. “How was I to know that carbolic acid has to be diluted?” he
mutters indignantly, from time to time, with a troubled gaze at his
mutilated finger-tips.
Since we came to Newala we have been making excursions in all
directions through the surrounding country, in accordance with old
habit, and also because the akida Sefu did not get together the tribal
elders from whom I wanted information so speedily as he had
promised. There is, however, no harm done, as, even if seen only
from the outside, the country and people are interesting enough.
The Makonde plateau is like a large rectangular table rounded off
at the corners. Measured from the Indian Ocean to Newala, it is
about seventy-five miles long, and between the Rovuma and the
Lukuledi it averages fifty miles in breadth, so that its superficial area
is about two-thirds of that of the kingdom of Saxony. The surface,
however, is not level, but uniformly inclined from its south-western
edge to the ocean. From the upper edge, on which Newala lies, the
eye ranges for many miles east and north-east, without encountering
any obstacle, over the Makonde bush. It is a green sea, from which
here and there thick clouds of smoke rise, to show that it, too, is
inhabited by men who carry on their tillage like so many other
primitive peoples, by cutting down and burning the bush, and
manuring with the ashes. Even in the radiant light of a tropical day
such a fire is a grand sight.
Much less effective is the impression produced just now by the
great western plain as seen from the edge of the plateau. As often as
time permits, I stroll along this edge, sometimes in one direction,
sometimes in another, in the hope of finding the air clear enough to
let me enjoy the view; but I have always been disappointed.
Wherever one looks, clouds of smoke rise from the burning bush,
and the air is full of smoke and vapour. It is a pity, for under more
favourable circumstances the panorama of the whole country up to
the distant Majeje hills must be truly magnificent. It is of little use
taking photographs now, and an outline sketch gives a very poor idea
of the scenery. In one of these excursions I went out of my way to
make a personal attempt on the Makonde bush. The present edge of
the plateau is the result of a far-reaching process of destruction
through erosion and denudation. The Makonde strata are
everywhere cut into by ravines, which, though short, are hundreds of
yards in depth. In consequence of the loose stratification of these
beds, not only are the walls of these ravines nearly vertical, but their
upper end is closed by an equally steep escarpment, so that the
western edge of the Makonde plateau is hemmed in by a series of
deep, basin-like valleys. In order to get from one side of such a ravine
to the other, I cut my way through the bush with a dozen of my men.
It was a very open part, with more grass than scrub, but even so the
short stretch of less than two hundred yards was very hard work; at
the end of it the men’s calicoes were in rags and they themselves
bleeding from hundreds of scratches, while even our strong khaki
suits had not escaped scatheless.

NATIVE PATH THROUGH THE MAKONDE BUSH, NEAR


MAHUTA

I see increasing reason to believe that the view formed some time
back as to the origin of the Makonde bush is the correct one. I have
no doubt that it is not a natural product, but the result of human
occupation. Those parts of the high country where man—as a very
slight amount of practice enables the eye to perceive at once—has not
yet penetrated with axe and hoe, are still occupied by a splendid
timber forest quite able to sustain a comparison with our mixed
forests in Germany. But wherever man has once built his hut or tilled
his field, this horrible bush springs up. Every phase of this process
may be seen in the course of a couple of hours’ walk along the main
road. From the bush to right or left, one hears the sound of the axe—
not from one spot only, but from several directions at once. A few
steps further on, we can see what is taking place. The brush has been
cut down and piled up in heaps to the height of a yard or more,
between which the trunks of the large trees stand up like the last
pillars of a magnificent ruined building. These, too, present a
melancholy spectacle: the destructive Makonde have ringed them—
cut a broad strip of bark all round to ensure their dying off—and also
piled up pyramids of brush round them. Father and son, mother and
son-in-law, are chopping away perseveringly in the background—too
busy, almost, to look round at the white stranger, who usually excites
so much interest. If you pass by the same place a week later, the piles
of brushwood have disappeared and a thick layer of ashes has taken
the place of the green forest. The large trees stretch their
smouldering trunks and branches in dumb accusation to heaven—if
they have not already fallen and been more or less reduced to ashes,
perhaps only showing as a white stripe on the dark ground.
This work of destruction is carried out by the Makonde alike on the
virgin forest and on the bush which has sprung up on sites already
cultivated and deserted. In the second case they are saved the trouble
of burning the large trees, these being entirely absent in the
secondary bush.
After burning this piece of forest ground and loosening it with the
hoe, the native sows his corn and plants his vegetables. All over the
country, he goes in for bed-culture, which requires, and, in fact,
receives, the most careful attention. Weeds are nowhere tolerated in
the south of German East Africa. The crops may fail on the plains,
where droughts are frequent, but never on the plateau with its
abundant rains and heavy dews. Its fortunate inhabitants even have
the satisfaction of seeing the proud Wayao and Wamakua working
for them as labourers, driven by hunger to serve where they were
accustomed to rule.
But the light, sandy soil is soon exhausted, and would yield no
harvest the second year if cultivated twice running. This fact has
been familiar to the native for ages; consequently he provides in
time, and, while his crop is growing, prepares the next plot with axe
and firebrand. Next year he plants this with his various crops and
lets the first piece lie fallow. For a short time it remains waste and
desolate; then nature steps in to repair the destruction wrought by
man; a thousand new growths spring out of the exhausted soil, and
even the old stumps put forth fresh shoots. Next year the new growth
is up to one’s knees, and in a few years more it is that terrible,
impenetrable bush, which maintains its position till the black
occupier of the land has made the round of all the available sites and
come back to his starting point.
The Makonde are, body and soul, so to speak, one with this bush.
According to my Yao informants, indeed, their name means nothing
else but “bush people.” Their own tradition says that they have been
settled up here for a very long time, but to my surprise they laid great
stress on an original immigration. Their old homes were in the
south-east, near Mikindani and the mouth of the Rovuma, whence
their peaceful forefathers were driven by the continual raids of the
Sakalavas from Madagascar and the warlike Shirazis[47] of the coast,
to take refuge on the almost inaccessible plateau. I have studied
African ethnology for twenty years, but the fact that changes of
population in this apparently quiet and peaceable corner of the earth
could have been occasioned by outside enterprises taking place on
the high seas, was completely new to me. It is, no doubt, however,
correct.
The charming tribal legend of the Makonde—besides informing us
of other interesting matters—explains why they have to live in the
thickest of the bush and a long way from the edge of the plateau,
instead of making their permanent homes beside the purling brooks
and springs of the low country.
“The place where the tribe originated is Mahuta, on the southern
side of the plateau towards the Rovuma, where of old time there was
nothing but thick bush. Out of this bush came a man who never
washed himself or shaved his head, and who ate and drank but little.
He went out and made a human figure from the wood of a tree
growing in the open country, which he took home to his abode in the
bush and there set it upright. In the night this image came to life and
was a woman. The man and woman went down together to the
Rovuma to wash themselves. Here the woman gave birth to a still-
born child. They left that place and passed over the high land into the
valley of the Mbemkuru, where the woman had another child, which
was also born dead. Then they returned to the high bush country of
Mahuta, where the third child was born, which lived and grew up. In
course of time, the couple had many more children, and called
themselves Wamatanda. These were the ancestral stock of the
Makonde, also called Wamakonde,[48] i.e., aborigines. Their
forefather, the man from the bush, gave his children the command to
bury their dead upright, in memory of the mother of their race who
was cut out of wood and awoke to life when standing upright. He also
warned them against settling in the valleys and near large streams,
for sickness and death dwelt there. They were to make it a rule to
have their huts at least an hour’s walk from the nearest watering-
place; then their children would thrive and escape illness.”
The explanation of the name Makonde given by my informants is
somewhat different from that contained in the above legend, which I
extract from a little book (small, but packed with information), by
Pater Adams, entitled Lindi und sein Hinterland. Otherwise, my
results agree exactly with the statements of the legend. Washing?
Hapana—there is no such thing. Why should they do so? As it is, the
supply of water scarcely suffices for cooking and drinking; other
people do not wash, so why should the Makonde distinguish himself
by such needless eccentricity? As for shaving the head, the short,
woolly crop scarcely needs it,[49] so the second ancestral precept is
likewise easy enough to follow. Beyond this, however, there is
nothing ridiculous in the ancestor’s advice. I have obtained from
various local artists a fairly large number of figures carved in wood,
ranging from fifteen to twenty-three inches in height, and
representing women belonging to the great group of the Mavia,
Makonde, and Matambwe tribes. The carving is remarkably well
done and renders the female type with great accuracy, especially the
keloid ornamentation, to be described later on. As to the object and
meaning of their works the sculptors either could or (more probably)
would tell me nothing, and I was forced to content myself with the
scanty information vouchsafed by one man, who said that the figures
were merely intended to represent the nembo—the artificial
deformations of pelele, ear-discs, and keloids. The legend recorded
by Pater Adams places these figures in a new light. They must surely
be more than mere dolls; and we may even venture to assume that
they are—though the majority of present-day Makonde are probably
unaware of the fact—representations of the tribal ancestress.
The references in the legend to the descent from Mahuta to the
Rovuma, and to a journey across the highlands into the Mbekuru
valley, undoubtedly indicate the previous history of the tribe, the
travels of the ancestral pair typifying the migrations of their
descendants. The descent to the neighbouring Rovuma valley, with
its extraordinary fertility and great abundance of game, is intelligible
at a glance—but the crossing of the Lukuledi depression, the ascent
to the Rondo Plateau and the descent to the Mbemkuru, also lie
within the bounds of probability, for all these districts have exactly
the same character as the extreme south. Now, however, comes a
point of especial interest for our bacteriological age. The primitive
Makonde did not enjoy their lives in the marshy river-valleys.
Disease raged among them, and many died. It was only after they
had returned to their original home near Mahuta, that the health
conditions of these people improved. We are very apt to think of the
African as a stupid person whose ignorance of nature is only equalled
by his fear of it, and who looks on all mishaps as caused by evil
spirits and malignant natural powers. It is much more correct to
assume in this case that the people very early learnt to distinguish
districts infested with malaria from those where it is absent.
This knowledge is crystallized in the
ancestral warning against settling in the
valleys and near the great waters, the
dwelling-places of disease and death. At the
same time, for security against the hostile
Mavia south of the Rovuma, it was enacted
that every settlement must be not less than a
certain distance from the southern edge of the
plateau. Such in fact is their mode of life at the
present day. It is not such a bad one, and
certainly they are both safer and more
comfortable than the Makua, the recent
intruders from the south, who have made USUAL METHOD OF
good their footing on the western edge of the CLOSING HUT-DOOR
plateau, extending over a fairly wide belt of
country. Neither Makua nor Makonde show in their dwellings
anything of the size and comeliness of the Yao houses in the plain,
especially at Masasi, Chingulungulu and Zuza’s. Jumbe Chauro, a
Makonde hamlet not far from Newala, on the road to Mahuta, is the
most important settlement of the tribe I have yet seen, and has fairly
spacious huts. But how slovenly is their construction compared with
the palatial residences of the elephant-hunters living in the plain.
The roofs are still more untidy than in the general run of huts during
the dry season, the walls show here and there the scanty beginnings
or the lamentable remains of the mud plastering, and the interior is a
veritable dog-kennel; dirt, dust and disorder everywhere. A few huts
only show any attempt at division into rooms, and this consists
merely of very roughly-made bamboo partitions. In one point alone
have I noticed any indication of progress—in the method of fastening
the door. Houses all over the south are secured in a simple but
ingenious manner. The door consists of a set of stout pieces of wood
or bamboo, tied with bark-string to two cross-pieces, and moving in
two grooves round one of the door-posts, so as to open inwards. If
the owner wishes to leave home, he takes two logs as thick as a man’s
upper arm and about a yard long. One of these is placed obliquely
against the middle of the door from the inside, so as to form an angle
of from 60° to 75° with the ground. He then places the second piece
horizontally across the first, pressing it downward with all his might.
It is kept in place by two strong posts planted in the ground a few
inches inside the door. This fastening is absolutely safe, but of course
cannot be applied to both doors at once, otherwise how could the
owner leave or enter his house? I have not yet succeeded in finding
out how the back door is fastened.

MAKONDE LOCK AND KEY AT JUMBE CHAURO


This is the general way of closing a house. The Makonde at Jumbe
Chauro, however, have a much more complicated, solid and original
one. Here, too, the door is as already described, except that there is
only one post on the inside, standing by itself about six inches from
one side of the doorway. Opposite this post is a hole in the wall just
large enough to admit a man’s arm. The door is closed inside by a
large wooden bolt passing through a hole in this post and pressing
with its free end against the door. The other end has three holes into
which fit three pegs running in vertical grooves inside the post. The
door is opened with a wooden key about a foot long, somewhat
curved and sloped off at the butt; the other end has three pegs
corresponding to the holes, in the bolt, so that, when it is thrust
through the hole in the wall and inserted into the rectangular
opening in the post, the pegs can be lifted and the bolt drawn out.[50]

MODE OF INSERTING THE KEY

With no small pride first one householder and then a second


showed me on the spot the action of this greatest invention of the
Makonde Highlands. To both with an admiring exclamation of
“Vizuri sana!” (“Very fine!”). I expressed the wish to take back these
marvels with me to Ulaya, to show the Wazungu what clever fellows
the Makonde are. Scarcely five minutes after my return to camp at
Newala, the two men came up sweating under the weight of two
heavy logs which they laid down at my feet, handing over at the same
time the keys of the fallen fortress. Arguing, logically enough, that if
the key was wanted, the lock would be wanted with it, they had taken
their axes and chopped down the posts—as it never occurred to them
to dig them out of the ground and so bring them intact. Thus I have
two badly damaged specimens, and the owners, instead of praise,
come in for a blowing-up.
The Makua huts in the environs of Newala are especially
miserable; their more than slovenly construction reminds one of the
temporary erections of the Makua at Hatia’s, though the people here
have not been concerned in a war. It must therefore be due to
congenital idleness, or else to the absence of a powerful chief. Even
the baraza at Mlipa’s, a short hour’s walk south-east of Newala,
shares in this general neglect. While public buildings in this country
are usually looked after more or less carefully, this is in evident
danger of being blown over by the first strong easterly gale. The only
attractive object in this whole district is the grave of the late chief
Mlipa. I visited it in the morning, while the sun was still trying with
partial success to break through the rolling mists, and the circular
grove of tall euphorbias, which, with a broken pot, is all that marks
the old king’s resting-place, impressed one with a touch of pathos.
Even my very materially-minded carriers seemed to feel something
of the sort, for instead of their usual ribald songs, they chanted
solemnly, as we marched on through the dense green of the Makonde
bush:—
“We shall arrive with the great master; we stand in a row and have
no fear about getting our food and our money from the Serkali (the
Government). We are not afraid; we are going along with the great
master, the lion; we are going down to the coast and back.”
With regard to the characteristic features of the various tribes here
on the western edge of the plateau, I can arrive at no other
conclusion than the one already come to in the plain, viz., that it is
impossible for anyone but a trained anthropologist to assign any
given individual at once to his proper tribe. In fact, I think that even
an anthropological specialist, after the most careful examination,
might find it a difficult task to decide. The whole congeries of peoples
collected in the region bounded on the west by the great Central
African rift, Tanganyika and Nyasa, and on the east by the Indian
Ocean, are closely related to each other—some of their languages are
only distinguished from one another as dialects of the same speech,
and no doubt all the tribes present the same shape of skull and
structure of skeleton. Thus, surely, there can be no very striking
differences in outward appearance.
Even did such exist, I should have no time
to concern myself with them, for day after day,
I have to see or hear, as the case may be—in
any case to grasp and record—an
extraordinary number of ethnographic
phenomena. I am almost disposed to think it
fortunate that some departments of inquiry, at
least, are barred by external circumstances.
Chief among these is the subject of iron-
working. We are apt to think of Africa as a
country where iron ore is everywhere, so to
speak, to be picked up by the roadside, and
where it would be quite surprising if the
inhabitants had not learnt to smelt the
material ready to their hand. In fact, the
knowledge of this art ranges all over the
continent, from the Kabyles in the north to the
Kafirs in the south. Here between the Rovuma
and the Lukuledi the conditions are not so
favourable. According to the statements of the
Makonde, neither ironstone nor any other
form of iron ore is known to them. They have
not therefore advanced to the art of smelting
the metal, but have hitherto bought all their
THE ANCESTRESS OF
THE MAKONDE
iron implements from neighbouring tribes.
Even in the plain the inhabitants are not much
better off. Only one man now living is said to
understand the art of smelting iron. This old fundi lives close to
Huwe, that isolated, steep-sided block of granite which rises out of
the green solitude between Masasi and Chingulungulu, and whose
jagged and splintered top meets the traveller’s eye everywhere. While
still at Masasi I wished to see this man at work, but was told that,
frightened by the rising, he had retired across the Rovuma, though
he would soon return. All subsequent inquiries as to whether the
fundi had come back met with the genuine African answer, “Bado”
(“Not yet”).
BRAZIER

Some consolation was afforded me by a brassfounder, whom I


came across in the bush near Akundonde’s. This man is the favourite
of women, and therefore no doubt of the gods; he welds the glittering
brass rods purchased at the coast into those massive, heavy rings
which, on the wrists and ankles of the local fair ones, continually give
me fresh food for admiration. Like every decent master-craftsman he
had all his tools with him, consisting of a pair of bellows, three
crucibles and a hammer—nothing more, apparently. He was quite
willing to show his skill, and in a twinkling had fixed his bellows on
the ground. They are simply two goat-skins, taken off whole, the four
legs being closed by knots, while the upper opening, intended to
admit the air, is kept stretched by two pieces of wood. At the lower
end of the skin a smaller opening is left into which a wooden tube is
stuck. The fundi has quickly borrowed a heap of wood-embers from
the nearest hut; he then fixes the free ends of the two tubes into an
earthen pipe, and clamps them to the ground by means of a bent
piece of wood. Now he fills one of his small clay crucibles, the dross
on which shows that they have been long in use, with the yellow
material, places it in the midst of the embers, which, at present are
only faintly glimmering, and begins his work. In quick alternation
the smith’s two hands move up and down with the open ends of the
bellows; as he raises his hand he holds the slit wide open, so as to let
the air enter the skin bag unhindered. In pressing it down he closes
the bag, and the air puffs through the bamboo tube and clay pipe into
the fire, which quickly burns up. The smith, however, does not keep
on with this work, but beckons to another man, who relieves him at
the bellows, while he takes some more tools out of a large skin pouch
carried on his back. I look on in wonder as, with a smooth round
stick about the thickness of a finger, he bores a few vertical holes into
the clean sand of the soil. This should not be difficult, yet the man
seems to be taking great pains over it. Then he fastens down to the
ground, with a couple of wooden clamps, a neat little trough made by
splitting a joint of bamboo in half, so that the ends are closed by the
two knots. At last the yellow metal has attained the right consistency,
and the fundi lifts the crucible from the fire by means of two sticks
split at the end to serve as tongs. A short swift turn to the left—a
tilting of the crucible—and the molten brass, hissing and giving forth
clouds of smoke, flows first into the bamboo mould and then into the
holes in the ground.
The technique of this backwoods craftsman may not be very far
advanced, but it cannot be denied that he knows how to obtain an
adequate result by the simplest means. The ladies of highest rank in
this country—that is to say, those who can afford it, wear two kinds
of these massive brass rings, one cylindrical, the other semicircular
in section. The latter are cast in the most ingenious way in the
bamboo mould, the former in the circular hole in the sand. It is quite
a simple matter for the fundi to fit these bars to the limbs of his fair
customers; with a few light strokes of his hammer he bends the
pliable brass round arm or ankle without further inconvenience to
the wearer.
SHAPING THE POT

SMOOTHING WITH MAIZE-COB

CUTTING THE EDGE


FINISHING THE BOTTOM

LAST SMOOTHING BEFORE


BURNING

FIRING THE BRUSH-PILE


LIGHTING THE FARTHER SIDE OF
THE PILE

TURNING THE RED-HOT VESSEL

NYASA WOMAN MAKING POTS AT MASASI


Pottery is an art which must always and everywhere excite the
interest of the student, just because it is so intimately connected with
the development of human culture, and because its relics are one of
the principal factors in the reconstruction of our own condition in
prehistoric times. I shall always remember with pleasure the two or
three afternoons at Masasi when Salim Matola’s mother, a slightly-
built, graceful, pleasant-looking woman, explained to me with
touching patience, by means of concrete illustrations, the ceramic art
of her people. The only implements for this primitive process were a
lump of clay in her left hand, and in the right a calabash containing
the following valuables: the fragment of a maize-cob stripped of all
its grains, a smooth, oval pebble, about the size of a pigeon’s egg, a
few chips of gourd-shell, a bamboo splinter about the length of one’s
hand, a small shell, and a bunch of some herb resembling spinach.
Nothing more. The woman scraped with the
shell a round, shallow hole in the soft, fine
sand of the soil, and, when an active young
girl had filled the calabash with water for her,
she began to knead the clay. As if by magic it
gradually assumed the shape of a rough but
already well-shaped vessel, which only wanted
a little touching up with the instruments
before mentioned. I looked out with the
MAKUA WOMAN closest attention for any indication of the use
MAKING A POT. of the potter’s wheel, in however rudimentary
SHOWS THE a form, but no—hapana (there is none). The
BEGINNINGS OF THE embryo pot stood firmly in its little
POTTER’S WHEEL
depression, and the woman walked round it in
a stooping posture, whether she was removing
small stones or similar foreign bodies with the maize-cob, smoothing
the inner or outer surface with the splinter of bamboo, or later, after
letting it dry for a day, pricking in the ornamentation with a pointed
bit of gourd-shell, or working out the bottom, or cutting the edge
with a sharp bamboo knife, or giving the last touches to the finished
vessel. This occupation of the women is infinitely toilsome, but it is
without doubt an accurate reproduction of the process in use among
our ancestors of the Neolithic and Bronze ages.
There is no doubt that the invention of pottery, an item in human
progress whose importance cannot be over-estimated, is due to
women. Rough, coarse and unfeeling, the men of the horde range
over the countryside. When the united cunning of the hunters has
succeeded in killing the game; not one of them thinks of carrying
home the spoil. A bright fire, kindled by a vigorous wielding of the
drill, is crackling beside them; the animal has been cleaned and cut
up secundum artem, and, after a slight singeing, will soon disappear
under their sharp teeth; no one all this time giving a single thought
to wife or child.
To what shifts, on the other hand, the primitive wife, and still more
the primitive mother, was put! Not even prehistoric stomachs could
endure an unvarying diet of raw food. Something or other suggested
the beneficial effect of hot water on the majority of approved but
indigestible dishes. Perhaps a neighbour had tried holding the hard
roots or tubers over the fire in a calabash filled with water—or maybe
an ostrich-egg-shell, or a hastily improvised vessel of bark. They
became much softer and more palatable than they had previously
been; but, unfortunately, the vessel could not stand the fire and got
charred on the outside. That can be remedied, thought our
ancestress, and plastered a layer of wet clay round a similar vessel.
This is an improvement; the cooking utensil remains uninjured, but
the heat of the fire has shrunk it, so that it is loose in its shell. The
next step is to detach it, so, with a firm grip and a jerk, shell and
kernel are separated, and pottery is invented. Perhaps, however, the
discovery which led to an intelligent use of the burnt-clay shell, was
made in a slightly different way. Ostrich-eggs and calabashes are not
to be found in every part of the world, but everywhere mankind has
arrived at the art of making baskets out of pliant materials, such as
bark, bast, strips of palm-leaf, supple twigs, etc. Our inventor has no
water-tight vessel provided by nature. “Never mind, let us line the
basket with clay.” This answers the purpose, but alas! the basket gets
burnt over the blazing fire, the woman watches the process of
cooking with increasing uneasiness, fearing a leak, but no leak
appears. The food, done to a turn, is eaten with peculiar relish; and
the cooking-vessel is examined, half in curiosity, half in satisfaction
at the result. The plastic clay is now hard as stone, and at the same
time looks exceedingly well, for the neat plaiting of the burnt basket
is traced all over it in a pretty pattern. Thus, simultaneously with
pottery, its ornamentation was invented.
Primitive woman has another claim to respect. It was the man,
roving abroad, who invented the art of producing fire at will, but the
woman, unable to imitate him in this, has been a Vestal from the
earliest times. Nothing gives so much trouble as the keeping alight of
the smouldering brand, and, above all, when all the men are absent
from the camp. Heavy rain-clouds gather, already the first large
drops are falling, the first gusts of the storm rage over the plain. The
little flame, a greater anxiety to the woman than her own children,
flickers unsteadily in the blast. What is to be done? A sudden thought
occurs to her, and in an instant she has constructed a primitive hut
out of strips of bark, to protect the flame against rain and wind.
This, or something very like it, was the way in which the principle
of the house was discovered; and even the most hardened misogynist
cannot fairly refuse a woman the credit of it. The protection of the
hearth-fire from the weather is the germ from which the human
dwelling was evolved. Men had little, if any share, in this forward
step, and that only at a late stage. Even at the present day, the
plastering of the housewall with clay and the manufacture of pottery
are exclusively the women’s business. These are two very significant
survivals. Our European kitchen-garden, too, is originally a woman’s
invention, and the hoe, the primitive instrument of agriculture, is,
characteristically enough, still used in this department. But the
noblest achievement which we owe to the other sex is unquestionably
the art of cookery. Roasting alone—the oldest process—is one for
which men took the hint (a very obvious one) from nature. It must
have been suggested by the scorched carcase of some animal
overtaken by the destructive forest-fires. But boiling—the process of
improving organic substances by the help of water heated to boiling-
point—is a much later discovery. It is so recent that it has not even
yet penetrated to all parts of the world. The Polynesians understand
how to steam food, that is, to cook it, neatly wrapped in leaves, in a
hole in the earth between hot stones, the air being excluded, and
(sometimes) a few drops of water sprinkled on the stones; but they
do not understand boiling.
To come back from this digression, we find that the slender Nyasa
woman has, after once more carefully examining the finished pot,
put it aside in the shade to dry. On the following day she sends me
word by her son, Salim Matola, who is always on hand, that she is
going to do the burning, and, on coming out of my house, I find her
already hard at work. She has spread on the ground a layer of very
dry sticks, about as thick as one’s thumb, has laid the pot (now of a
yellowish-grey colour) on them, and is piling brushwood round it.
My faithful Pesa mbili, the mnyampara, who has been standing by,
most obligingly, with a lighted stick, now hands it to her. Both of
them, blowing steadily, light the pile on the lee side, and, when the
flame begins to catch, on the weather side also. Soon the whole is in a
blaze, but the dry fuel is quickly consumed and the fire dies down, so
that we see the red-hot vessel rising from the ashes. The woman
turns it continually with a long stick, sometimes one way and
sometimes another, so that it may be evenly heated all over. In
twenty minutes she rolls it out of the ash-heap, takes up the bundle
of spinach, which has been lying for two days in a jar of water, and
sprinkles the red-hot clay with it. The places where the drops fall are
marked by black spots on the uniform reddish-brown surface. With a
sigh of relief, and with visible satisfaction, the woman rises to an
erect position; she is standing just in a line between me and the fire,
from which a cloud of smoke is just rising: I press the ball of my
camera, the shutter clicks—the apotheosis is achieved! Like a
priestess, representative of her inventive sex, the graceful woman
stands: at her feet the hearth-fire she has given us beside her the
invention she has devised for us, in the background the home she has
built for us.
At Newala, also, I have had the manufacture of pottery carried on
in my presence. Technically the process is better than that already
described, for here we find the beginnings of the potter’s wheel,
which does not seem to exist in the plains; at least I have seen
nothing of the sort. The artist, a frightfully stupid Makua woman, did
not make a depression in the ground to receive the pot she was about
to shape, but used instead a large potsherd. Otherwise, she went to
work in much the same way as Salim’s mother, except that she saved
herself the trouble of walking round and round her work by squatting
at her ease and letting the pot and potsherd rotate round her; this is
surely the first step towards a machine. But it does not follow that
the pot was improved by the process. It is true that it was beautifully
rounded and presented a very creditable appearance when finished,
but the numerous large and small vessels which I have seen, and, in
part, collected, in the “less advanced” districts, are no less so. We
moderns imagine that instruments of precision are necessary to
produce excellent results. Go to the prehistoric collections of our
museums and look at the pots, urns and bowls of our ancestors in the
dim ages of the past, and you will at once perceive your error.
MAKING LONGITUDINAL CUT IN
BARK

DRAWING THE BARK OFF THE LOG

REMOVING THE OUTER BARK


BEATING THE BARK

WORKING THE BARK-CLOTH AFTER BEATING, TO MAKE IT


SOFT

MANUFACTURE OF BARK-CLOTH AT NEWALA


To-day, nearly the whole population of German East Africa is
clothed in imported calico. This was not always the case; even now in
some parts of the north dressed skins are still the prevailing wear,
and in the north-western districts—east and north of Lake
Tanganyika—lies a zone where bark-cloth has not yet been
superseded. Probably not many generations have passed since such
bark fabrics and kilts of skins were the only clothing even in the
south. Even to-day, large quantities of this bright-red or drab
material are still to be found; but if we wish to see it, we must look in
the granaries and on the drying stages inside the native huts, where
it serves less ambitious uses as wrappings for those seeds and fruits
which require to be packed with special care. The salt produced at
Masasi, too, is packed for transport to a distance in large sheets of
bark-cloth. Wherever I found it in any degree possible, I studied the
process of making this cloth. The native requisitioned for the
purpose arrived, carrying a log between two and three yards long and
as thick as his thigh, and nothing else except a curiously-shaped
mallet and the usual long, sharp and pointed knife which all men and
boys wear in a belt at their backs without a sheath—horribile dictu!
[51]
Silently he squats down before me, and with two rapid cuts has
drawn a couple of circles round the log some two yards apart, and
slits the bark lengthwise between them with the point of his knife.
With evident care, he then scrapes off the outer rind all round the
log, so that in a quarter of an hour the inner red layer of the bark
shows up brightly-coloured between the two untouched ends. With
some trouble and much caution, he now loosens the bark at one end,
and opens the cylinder. He then stands up, takes hold of the free
edge with both hands, and turning it inside out, slowly but steadily
pulls it off in one piece. Now comes the troublesome work of
scraping all superfluous particles of outer bark from the outside of
the long, narrow piece of material, while the inner side is carefully
scrutinised for defective spots. At last it is ready for beating. Having
signalled to a friend, who immediately places a bowl of water beside
him, the artificer damps his sheet of bark all over, seizes his mallet,
lays one end of the stuff on the smoothest spot of the log, and
hammers away slowly but continuously. “Very simple!” I think to
myself. “Why, I could do that, too!”—but I am forced to change my
opinions a little later on; for the beating is quite an art, if the fabric is
not to be beaten to pieces. To prevent the breaking of the fibres, the
stuff is several times folded across, so as to interpose several
thicknesses between the mallet and the block. At last the required
state is reached, and the fundi seizes the sheet, still folded, by both
ends, and wrings it out, or calls an assistant to take one end while he
holds the other. The cloth produced in this way is not nearly so fine
and uniform in texture as the famous Uganda bark-cloth, but it is
quite soft, and, above all, cheap.
Now, too, I examine the mallet. My craftsman has been using the
simpler but better form of this implement, a conical block of some
hard wood, its base—the striking surface—being scored across and
across with more or less deeply-cut grooves, and the handle stuck
into a hole in the middle. The other and earlier form of mallet is
shaped in the same way, but the head is fastened by an ingenious
network of bark strips into the split bamboo serving as a handle. The
observation so often made, that ancient customs persist longest in
connection with religious ceremonies and in the life of children, here
finds confirmation. As we shall soon see, bark-cloth is still worn
during the unyago,[52] having been prepared with special solemn
ceremonies; and many a mother, if she has no other garment handy,
will still put her little one into a kilt of bark-cloth, which, after all,
looks better, besides being more in keeping with its African
surroundings, than the ridiculous bit of print from Ulaya.
MAKUA WOMEN

You might also like