100% found this document useful (2 votes)
19 views

(eBook PDF) Java How To Program (Early Objects) 10thpdf download

The document provides links to various eBook PDFs related to programming in Java and C++, including editions by Paul J. Deitel. It highlights the availability of both early and late object versions of Java programming books, along with additional resources in translational medicine and heterocyclic chemistry. The content also includes information about the global editions tailored for international students and details regarding the structure and topics covered in the Java programming books.

Uploaded by

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

(eBook PDF) Java How To Program (Early Objects) 10thpdf download

The document provides links to various eBook PDFs related to programming in Java and C++, including editions by Paul J. Deitel. It highlights the availability of both early and late object versions of Java programming books, along with additional resources in translational medicine and heterocyclic chemistry. The content also includes information about the global editions tailored for international students and details regarding the structure and topics covered in the Java programming books.

Uploaded by

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

(eBook PDF) Java How To Program (Early Objects)

10th download

https://ebookluna.com/product/ebook-pdf-java-how-to-program-
early-objects-10th/

Download more ebook from https://ebookluna.com


We believe these products will be a great fit for you. Click
the link to download now, or visit ebookluna.com
to discover even more!

(eBook PDF) Java How to Program, Late Objects Global Edition 11th Edition

https://ebookluna.com/product/ebook-pdf-java-how-to-program-late-objects-
global-edition-11th-edition/

(eBook PDF) Java How to Program, Early Objects 11th Edition by Paul J.
Deitel

https://ebookluna.com/product/ebook-pdf-java-how-to-program-early-
objects-11th-edition-by-paul-j-deitel/

C++ How to Program Early Objects Version 9th Edition (eBook PDF)

https://ebookluna.com/product/c-how-to-program-early-objects-version-9th-
edition-ebook-pdf/

C++ How to Program: An Objects-Natural Approach, 11e 11th Edition Paul


Deitel - eBook PDF

https://ebookluna.com/download/c-how-to-program-an-objects-natural-
approach-11e-ebook-pdf/
(eBook PDF) Translational Medicine in CNS Drug Development, Volume 29

https://ebookluna.com/product/ebook-pdf-translational-medicine-in-cns-drug-
development-volume-29/

Progress in Heterocyclic Chemistry Volume 29 1st Edition - eBook PDF

https://ebookluna.com/download/progress-in-heterocyclic-chemistry-ebook-
pdf/

(eBook PDF) C++ How to Program 10th Edition by Paul J. Deitel

https://ebookluna.com/product/ebook-pdf-c-how-to-program-10th-edition-by-
paul-j-deitel/

(eBook PDF) Big Java: Early Objects 5th Edition

https://ebookluna.com/product/ebook-pdf-big-java-early-objects-5th-edition/

(eBook PDF) Big Java: Early Objects, 7th Edition

https://ebookluna.com/product/ebook-pdf-big-java-early-objects-7th-edition/
Global Global
edition edition

edition
GlobalJava™ How to Program
For these Global Editions, the editorial team at Pearson has
collaborated with educators across the world to address a
wide range of subjects and requirements, equipping students

Early Objects
with the best possible learning tools. This Global Edition
preserves the cutting-edge approach and pedagogy of the
original, but also features alterations, customization and
adaptation from the North American version.

edition
TENTH
Java™ How to Program
Deitel • Deitel
This is a special edition of an established
title widely used by colleges and universities
throughout the world. Pearson published this
Early Objects
exclusive edition for the benefit of students
outside the United States and Canada. If you TENTH edition
purchased this book within the United States
or Canada you should be aware that it has
been imported without the approval of the
Publisher or Author.
Paul Deitel • Harvey Deitel
Pearson Global Edition
A01_DEIT7806_SE_10_TP.fm Page 6 Monday, July 7, 2014 12:37 PM

Trademarks
DEITEL, the double-thumbs-up bug and DIVE INTO are registered trademarks of Deitel and Associates,
Inc.
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks
of their respective owners.
Microsoft and/or its respective suppliers make no representations about the suitability of the information
contained in the documents and related graphics published as part of the services for any purpose. All
such documents and related graphics are provided “as is” without warranty of any kind. Microsoft and/
or its respective suppliers hereby disclaim all warranties and conditions with regard to this information,
including all warranties and conditions of merchantability, whether express, implied or statutory, fitness
for a particular purpose, title and non-infringement. In no event shall Microsoft and/or its respective sup-
pliers be liable for any special, indirect or consequential damages or any damages whatsoever resulting
from loss of use, data or profits, whether in an action of contract, negligence or other tortious action,
arising out of or in connection with the use or performance of information available from the services.
The documents and related graphics contained herein could include technical inaccuracies or typograph-
ical errors. Changes are periodically added to the information herein. Microsoft and/or its respective sup-
pliers may make improvements and/or changes in the product(s) and/or the program(s) described herein
at any time. Partial screen shots may be viewed in full within the software version specified.
Microsoft® and Windows® are registered trademarks of the Microsoft Corporation in the U.S.A. and
other countries. Screen shots and icons reprinted with permission from the Microsoft Corporation. This
book is not sponsored or endorsed by or affiliated with the Microsoft Corporation.UNIX is a registered
trademark of The Open Group.
Apache is a trademark of The Apache Software Foundation.
CSS and XML are registered trademarks of the World Wide Web Consortium.
Firefox is a registered trademark of the Mozilla Foundation.
Google is a trademark of Google, Inc.
Mac and OS X are trademarks of Apple Inc., registered in the U.S. and other countries.
Linux is a registered trademark of Linus Torvalds. All trademarks are property of their respective owners.
Throughout this book, trademarks are used. Rather than put a trademark symbol in every occurrence of
a trademarked name, we state that we are using the names in an editorial fashion only and to the benefit
of the trademark owner, with no intention of infringement of the trademark.
A02_DEIT7806_SE_10_TOC.fm Page 7 Monday, July 7, 2014 11:59 AM

Contents
Chapters 26–34 and Appendices F–N are PDF documents posted online at the book’s
Companion Website (located at www.pearsonglobaleditions.com/deitel). See the in-
side front cover for information on accessing the Companion Website.

Foreword 23
Preface 25
Before You Begin 39
1 Introduction to Computers, the Internet and Java 43
1.1 Introduction 44
1.2 Hardware and Software 46
1.2.1 Moore’s Law 46
1.2.2 Computer Organization 47
1.3 Data Hierarchy 48
1.4 Machine Languages, Assembly Languages and High-Level Languages 51
1.5 Introduction to Object Technology 52
1.5.1 The Automobile as an Object 52
1.5.2 Methods and Classes 53
1.5.3 Instantiation 53
1.5.4 Reuse 53
1.5.5 Messages and Method Calls 53
1.5.6 Attributes and Instance Variables 53
1.5.7 Encapsulation and Information Hiding 54
1.5.8 Inheritance 54
1.5.9 Interfaces 54
1.5.10 Object-Oriented Analysis and Design (OOAD) 54
1.5.11 The UML (Unified Modeling Language) 55
1.6 Operating Systems 55
1.6.1 Windows—A Proprietary Operating System 55
1.6.2 Linux—An Open-Source Operating System 56
1.6.3 Android 56
1.7 Programming Languages 57
1.8 Java 59
1.9 A Typical Java Development Environment 59
1.10 Test-Driving a Java Application 63
A02_DEIT7806_SE_10_TOC.fm Page 8 Monday, July 7, 2014 11:59 AM

8 Contents

1.11 Internet and World Wide Web 67


1.11.1 The Internet: A Network of Networks 68
1.11.2 The World Wide Web: Making the Internet User-Friendly 68
1.11.3 Web Services and Mashups 68
1.11.4 Ajax 69
1.11.5 The Internet of Things 69
1.12 Software Technologies 70
1.13 Keeping Up-to-Date with Information Technologies 72

2 Introduction to Java Applications;


Input/Output and Operators 76
2.1 Introduction 77
2.2 Your First Program in Java: Printing a Line of Text 77
2.3 Modifying Your First Java Program 83
2.4 Displaying Text with printf 85
2.5 Another Application: Adding Integers 87
2.5.1 import Declarations 87
2.5.2 Declaring Class Addition 88
2.5.3 Declaring and Creating a Scanner to Obtain User Input from
the Keyboard 88
2.5.4 Declaring Variables to Store Integers 89
2.5.5 Prompting the User for Input 90
2.5.6 Obtaining an int as Input from the User 90
2.5.7 Prompting for and Inputting a Second int 91
2.5.8 Using Variables in a Calculation 91
2.5.9 Displaying the Result of the Calculation 91
2.5.10 Java API Documentation 91
2.6 Memory Concepts 92
2.7 Arithmetic 93
2.8 Decision Making: Equality and Relational Operators 96
2.9 Wrap-Up 100

3 Introduction to Classes, Objects, Methods


and Strings 111
3.1 Introduction 112
3.2 Instance Variables, set Methods and get Methods 113
3.2.1 Account Class with an Instance Variable, a set Method and
a get Method 113
3.2.2 AccountTest Class That Creates and Uses an Object of
Class Account 116
3.2.3 Compiling and Executing an App with Multiple Classes 119
3.2.4 Account UML Class Diagram with an Instance Variable and
set and get Methods 119
3.2.5 Additional Notes on Class AccountTest 120
A02_DEIT7806_SE_10_TOC.fm Page 9 Monday, July 7, 2014 11:59 AM

Contents 9

3.2.6 Software Engineering with private Instance Variables and


public set and get Methods 121
3.3 Primitive Types vs. Reference Types 122
3.4 Account Class: Initializing Objects with Constructors 123
3.4.1 Declaring an Account Constructor for Custom Object Initialization 123
3.4.2 Class AccountTest: Initializing Account Objects When
They’re Created 124
3.5 Account Class with a Balance; Floating-Point Numbers 126
3.5.1 Account Class with a balance Instance Variable of Type double 127
3.5.2 AccountTest Class to Use Class Account 128
3.6 (Optional) GUI and Graphics Case Study: Using Dialog Boxes 132
3.7 Wrap-Up 135

4 Control Statements: Part 1; Assignment,


++ and -- Operators 143
4.1 Introduction 144
4.2 Algorithms 144
4.3 Pseudocode 145
4.4 Control Structures 145
4.5 if Single-Selection Statement 147
4.6 if…else Double-Selection Statement 148
4.7 Student Class: Nested if…else Statements 153
4.8 while Repetition Statement 155
4.9 Formulating Algorithms: Counter-Controlled Repetition 157
4.10 Formulating Algorithms: Sentinel-Controlled Repetition 161
4.11 Formulating Algorithms: Nested Control Statements 168
4.12 Compound Assignment Operators 173
4.13 Increment and Decrement Operators 173
4.14 Primitive Types 176
4.15 (Optional) GUI and Graphics Case Study: Creating Simple Drawings 177
4.16 Wrap-Up 181

5 Control Statements: Part 2; Logical Operators 194


5.1 Introduction 195
5.2 Essentials of Counter-Controlled Repetition 195
5.3 for Repetition Statement 197
5.4 Examples Using the for Statement 201
5.5 do…while Repetition Statement 205
5.6 switch Multiple-Selection Statement 207
5.7 Class AutoPolicy Case Study: Strings in switch Statements 213
5.8 break and continue Statements 216
5.9 Logical Operators 218
5.10 Structured Programming Summary 224
5.11 (Optional) GUI and Graphics Case Study: Drawing Rectangles and Ovals 229
5.12 Wrap-Up 232
A02_DEIT7806_SE_10_TOC.fm Page 10 Monday, July 7, 2014 11:59 AM

10 Contents

6 Methods: A Deeper Look 242


6.1 Introduction 243
6.2 Program Modules in Java 243
6.3 static Methods, static Fields and Class Math 245
6.4 Declaring Methods with Multiple Parameters 247
6.5 Notes on Declaring and Using Methods 250
6.6 Method-Call Stack and Stack Frames 251
6.7 Argument Promotion and Casting 252
6.8 Java API Packages 253
6.9 Case Study: Secure Random-Number Generation 255
6.10 Case Study: A Game of Chance; Introducing enum Types 260
6.11 Scope of Declarations 264
6.12 Method Overloading 267
6.13 (Optional) GUI and Graphics Case Study: Colors and Filled Shapes 269
6.14 Wrap-Up 272

7 Arrays and ArrayLists 285


7.1 Introduction 286
7.2 Arrays 287
7.3 Declaring and Creating Arrays 288
7.4 Examples Using Arrays 289
7.4.1 Creating and Initializing an Array 289
7.4.2 Using an Array Initializer 290
7.4.3 Calculating the Values to Store in an Array 291
7.4.4 Summing the Elements of an Array 293
7.4.5 Using Bar Charts to Display Array Data Graphically 293
7.4.6 Using the Elements of an Array as Counters 295
7.4.7 Using Arrays to Analyze Survey Results 296
7.5 Exception Handling: Processing the Incorrect Response 298
7.5.1 The try Statement 298
7.5.2 Executing the catch Block 298
7.5.3 toString Method of the Exception Parameter 299
7.6 Case Study: Card Shuffling and Dealing Simulation 299
7.7 Enhanced for Statement 304
7.8 Passing Arrays to Methods 305
7.9 Pass-By-Value vs. Pass-By-Reference 307
7.10 Case Study: Class GradeBook Using an Array to Store Grades 308
7.11 Multidimensional Arrays 314
7.12 Case Study: Class GradeBook Using a Two-Dimensional Array 317
7.13 Variable-Length Argument Lists 323
7.14 Using Command-Line Arguments 325
7.15 Class Arrays 327
7.16 Introduction to Collections and Class ArrayList 329
7.17 (Optional) GUI and Graphics Case Study: Drawing Arcs 333
7.18 Wrap-Up 336
A02_DEIT7806_SE_10_TOC.fm Page 11 Monday, July 7, 2014 11:59 AM

Contents 11

8 Classes and Objects: A Deeper Look 357


8.1 Introduction 358
8.2 Time Class Case Study 358
8.3 Controlling Access to Members 363
8.4 Referring to the Current Object’s Members with the this Reference 364
8.5 Time Class Case Study: Overloaded Constructors 366
8.6 Default and No-Argument Constructors 372
8.7 Notes on Set and Get Methods 372
8.8 Composition 374
8.9 enum Types 377
8.10 Garbage Collection 379
8.11 static Class Members 380
8.12 static Import 384
8.13 final Instance Variables 385
8.14 Package Access 386
8.15 Using BigDecimal for Precise Monetary Calculations 387
8.16 (Optional) GUI and Graphics Case Study: Using Objects with Graphics 390
8.17 Wrap-Up 394

9 Object-Oriented Programming: Inheritance 402


9.1 Introduction 403
9.2 Superclasses and Subclasses 404
9.3 protected Members 406
9.4 Relationship Between Superclasses and Subclasses 407
9.4.1 Creating and Using a CommissionEmployee Class 407
9.4.2 Creating and Using a BasePlusCommissionEmployee Class 413
9.4.3 Creating a CommissionEmployee–BasePlusCommissionEmployee
Inheritance Hierarchy 418
9.4.4 CommissionEmployee–BasePlusCommissionEmployee
Inheritance Hierarchy Using protected Instance Variables 421
9.4.5 CommissionEmployee–BasePlusCommissionEmployee
Inheritance Hierarchy Using private Instance Variables 424
9.5 Constructors in Subclasses 429
9.6 Class Object 429
9.7 (Optional) GUI and Graphics Case Study: Displaying Text and
Images Using Labels 430
9.8 Wrap-Up 433

10 Object-Oriented Programming:
Polymorphism and Interfaces 437
10.1 Introduction 438
10.2 Polymorphism Examples 440
10.3 Demonstrating Polymorphic Behavior 441
10.4 Abstract Classes and Methods 443
A02_DEIT7806_SE_10_TOC.fm Page 12 Monday, July 7, 2014 11:59 AM

12 Contents

10.5 Case Study: Payroll System Using Polymorphism 446


10.5.1 Abstract Superclass Employee 447
10.5.2 Concrete Subclass SalariedEmployee 449
10.5.3 Concrete Subclass HourlyEmployee 451
10.5.4 Concrete Subclass CommissionEmployee 453
10.5.5 Indirect Concrete Subclass BasePlusCommissionEmployee 455
10.5.6 Polymorphic Processing, Operator instanceof and Downcasting 456
10.6 Allowed Assignments Between Superclass and Subclass Variables 461
10.7 final Methods and Classes 461
10.8 A Deeper Explanation of Issues with Calling Methods from Constructors 462
10.9 Creating and Using Interfaces 463
10.9.1 Developing a Payable Hierarchy 464
10.9.2 Interface Payable 465
10.9.3 Class Invoice 466
10.9.4 Modifying Class Employee to Implement Interface Payable 468
10.9.5 Modifying Class SalariedEmployee for Use in the Payable
Hierarchy 470
10.9.6 Using Interface Payable to Process Invoices and Employees
Polymorphically 472
10.9.7 Some Common Interfaces of the Java API 473
10.10 Java SE 8 Interface Enhancements 474
10.10.1 default Interface Methods 474
10.10.2 static Interface Methods 475
10.10.3 Functional Interfaces 475
10.11 (Optional) GUI and Graphics Case Study: Drawing with Polymorphism 475
10.12 Wrap-Up 478

11 Exception Handling: A Deeper Look 483


11.1 Introduction 484
11.2 Example: Divide by Zero without Exception Handling 485
11.3 Example: Handling ArithmeticExceptions and InputMismatchExceptions 487
11.4 When to Use Exception Handling 493
11.5 Java Exception Hierarchy 493
11.6 finally Block 496
11.7 Stack Unwinding and Obtaining Information from an Exception Object 501
11.8 Chained Exceptions 503
11.9 Declaring New Exception Types 506
11.10 Preconditions and Postconditions 507
11.11 Assertions 507
11.12 try-with-Resources: Automatic Resource Deallocation 509
11.13 Wrap-Up 509

12 GUI Components: Part 1 515


12.1 Introduction 516
A02_DEIT7806_SE_10_TOC.fm Page 13 Monday, July 7, 2014 11:59 AM

Contents 13

12.2 Java’s Nimbus Look-and-Feel 517


12.3 Simple GUI-Based Input/Output with JOptionPane 518
12.4 Overview of Swing Components 521
12.5 Displaying Text and Images in a Window 523
12.6 Text Fields and an Introduction to Event Handling with Nested Classes 527
12.7 Common GUI Event Types and Listener Interfaces 533
12.8 How Event Handling Works 535
12.9 JButton 537
12.10 Buttons That Maintain State 540
12.10.1 JCheckBox 541
12.10.2 JRadioButton 543
12.11 JComboBox; Using an Anonymous Inner Class for Event Handling 546
12.12 JList 550
12.13 Multiple-Selection Lists 553
12.14 Mouse Event Handling 555
12.15 Adapter Classes 560
12.16 JPanel Subclass for Drawing with the Mouse 564
12.17 Key Event Handling 567
12.18 Introduction to Layout Managers 570
12.18.1 FlowLayout 572
12.18.2 BorderLayout 574
12.18.3 GridLayout 578
12.19 Using Panels to Manage More Complex Layouts 580
12.20 JTextArea 581
12.21 Wrap-Up 584

13 Graphics and Java 2D 597


13.1 Introduction 598
13.2 Graphics Contexts and Graphics Objects 600
13.3 Color Control 601
13.4 Manipulating Fonts 608
13.5 Drawing Lines, Rectangles and Ovals 613
13.6 Drawing Arcs 617
13.7 Drawing Polygons and Polylines 620
13.8 Java 2D API 623
13.9 Wrap-Up 630

14 Strings, Characters and Regular Expressions 638


14.1 Introduction 639
14.2 Fundamentals of Characters and Strings 639
14.3 Class String 640
14.3.1 String Constructors 640
14.3.2 String Methods length, charAt and getChars 641
14.3.3 Comparing Strings 642
A02_DEIT7806_SE_10_TOC.fm Page 14 Monday, July 7, 2014 11:59 AM

14 Contents

14.3.4 Locating Characters and Substrings in Strings 647


14.3.5 Extracting Substrings from Strings 649
14.3.6 Concatenating Strings 650
14.3.7 Miscellaneous String Methods 650
14.3.8 String Method valueOf 652
14.4 Class StringBuilder 653
14.4.1 StringBuilder Constructors 654
14.4.2 StringBuilder Methods length, capacity, setLength
and ensureCapacity 654
14.4.3 StringBuilder Methods charAt, setCharAt, getChars
and reverse 656
14.4.4 StringBuilder append Methods 657
14.4.5 StringBuilder Insertion and Deletion Methods 659
14.5 Class Character 660
14.6 Tokenizing Strings 665
14.7 Regular Expressions, Class Pattern and Class Matcher 666
14.8 Wrap-Up 675

15 Files, Streams and Object Serialization 686


15.1 Introduction 687
15.2 Files and Streams 687
15.3 Using NIO Classes and Interfaces to Get File and Directory Information 689
15.4 Sequential-Access Text Files 693
15.4.1 Creating a Sequential-Access Text File 693
15.4.2 Reading Data from a Sequential-Access Text File 697
15.4.3 Case Study: A Credit-Inquiry Program 699
15.4.4 Updating Sequential-Access Files 703
15.5 Object Serialization 704
15.5.1 Creating a Sequential-Access File Using Object Serialization 705
15.5.2 Reading and Deserializing Data from a Sequential-Access File 710
15.6 Opening Files with JFileChooser 712
15.7 (Optional) Additional java.io Classes 715
15.7.1 Interfaces and Classes for Byte-Based Input and Output 715
15.7.2 Interfaces and Classes for Character-Based Input and Output 717
15.8 Wrap-Up 718

16 Generic Collections 726


16.1 Introduction 727
16.2 Collections Overview 727
16.3 Type-Wrapper Classes 729
16.4 Autoboxing and Auto-Unboxing 729
16.5 Interface Collection and Class Collections 729
16.6 Lists 730
16.6.1 ArrayList and Iterator 731
16.6.2 LinkedList 733
A02_DEIT7806_SE_10_TOC.fm Page 15 Monday, July 7, 2014 11:59 AM

Contents 15

16.7 Collections Methods 738


16.7.1 Method sort 739
16.7.2 Method shuffle 742
16.7.3 Methods reverse, fill, copy, max and min 744
16.7.4 Method binarySearch 746
16.7.5 Methods addAll, frequency and disjoint 748
16.8 Stack Class of Package java.util 750
16.9 Class PriorityQueue and Interface Queue 752
16.10 Sets 753
16.11 Maps 756
16.12 Properties Class 760
16.13 Synchronized Collections 763
16.14 Unmodifiable Collections 763
16.15 Abstract Implementations 764
16.16 Wrap-Up 764

17 Java SE 8 Lambdas and Streams 771


17.1 Introduction 772
17.2 Functional Programming Technologies Overview 773
17.2.1 Functional Interfaces 774
17.2.2 Lambda Expressions 775
17.2.3 Streams 776
17.3 IntStream Operations 778
17.3.1 Creating an IntStream and Displaying Its Values with the
forEach Terminal Operation 780
17.3.2 Terminal Operations count, min, max, sum and average 781
17.3.3 Terminal Operation reduce 781
17.3.4 Intermediate Operations: Filtering and Sorting IntStream Values 783
17.3.5 Intermediate Operation: Mapping 784
17.3.6 Creating Streams of ints with IntStream Methods range and
rangeClosed 785
17.4 Stream<Integer> Manipulations 785
17.4.1 Creating a Stream<Integer> 786
17.4.2 Sorting a Stream and Collecting the Results 787
17.4.3 Filtering a Stream and Storing the Results for Later Use 787
17.4.4 Filtering and Sorting a Stream and Collecting the Results 787
17.4.5 Sorting Previously Collected Results 787
17.5 Stream<String> Manipulations 788
17.5.1 Mapping Strings to Uppercase Using a Method Reference 789
17.5.2 Filtering Strings Then Sorting Them in Case-Insensitive
Ascending Order 790
17.5.3 Filtering Strings Then Sorting Them in Case-Insensitive
Descending Order 790
17.6 Stream<Employee> Manipulations 790
17.6.1 Creating and Displaying a List<Employee> 792
A02_DEIT7806_SE_10_TOC.fm Page 16 Monday, July 7, 2014 11:59 AM

16 Contents

17.6.2 Filtering Employees with Salaries in a Specified Range 793


17.6.3 Sorting Employees By Multiple Fields 794
17.6.4 Mapping Employees to Unique Last Name Strings 796
17.6.5 Grouping Employees By Department 797
17.6.6 Counting the Number of Employees in Each Department 798
17.6.7 Summing and Averaging Employee Salaries 798
17.7 Creating a Stream<String> from a File 800
17.8 Generating Streams of Random Values 803
17.9 Lambda Event Handlers 805
17.10 Additional Notes on Java SE 8 Interfaces 805
17.11 Java SE 8 and Functional Programming Resources 806
17.12 Wrap-Up 806

18 Recursion 818
18.1 Introduction 819
18.2 Recursion Concepts 820
18.3 Example Using Recursion: Factorials 821
18.4 Reimplementing Class FactorialCalculator Using Class BigInteger 823
18.5 Example Using Recursion: Fibonacci Series 825
18.6 Recursion and the Method-Call Stack 828
18.7 Recursion vs. Iteration 829
18.8 Towers of Hanoi 831
18.9 Fractals 833
18.9.1 Koch Curve Fractal 833
18.9.2 (Optional) Case Study: Lo Feather Fractal 834
18.10 Recursive Backtracking 843
18.11 Wrap-Up 844

19 Searching, Sorting and Big O 852


19.1 Introduction 853
19.2 Linear Search 854
19.3 Big O Notation 856
19.3.1 O(1) Algorithms 856
19.3.2 O(n) Algorithms 857
19.3.3 O(n2) Algorithms 857
19.3.4 Big O of the Linear Search 858
19.4 Binary Search 858
19.4.1 Binary Search Implementation 859
19.4.2 Efficiency of the Binary Search 862
19.5 Sorting Algorithms 862
19.6 Selection Sort 863
19.6.1 Selection Sort Implementation 863
19.6.2 Efficiency of the Selection Sort 866
19.7 Insertion Sort 866
A02_DEIT7806_SE_10_TOC.fm Page 17 Monday, July 7, 2014 11:59 AM

Contents 17

19.7.1 Insertion Sort Implementation 867


19.7.2 Efficiency of the Insertion Sort 869
19.8 Merge Sort 869
19.8.1 Merge Sort Implementation 870
19.8.2 Efficiency of the Merge Sort 874
19.9 Big O Summary for This Chapter’s Searching and Sorting Algorithms 875
19.10 Wrap-Up 876

20 Generic Classes and Methods 881


20.1 Introduction 882
20.2 Motivation for Generic Methods 882
20.3 Generic Methods: Implementation and Compile-Time Translation 884
20.4 Additional Compile-Time Translation Issues: Methods That Use a
Type Parameter as the Return Type 887
20.5 Overloading Generic Methods 890
20.6 Generic Classes 891
20.7 Raw Types 898
20.8 Wildcards in Methods That Accept Type Parameters 902
20.9 Wrap-Up 906

21 Custom Generic Data Structures 911


21.1 Introduction 912
21.2 Self-Referential Classes 913
21.3 Dynamic Memory Allocation 913
21.4 Linked Lists 914
21.4.1 Singly Linked Lists 914
21.4.2 Implementing a Generic List Class 915
21.4.3 Generic Classes ListNode and List 920
21.4.4 Class ListTest 920
21.4.5 List Method insertAtFront 920
21.4.6 List Method insertAtBack 921
21.4.7 List Method removeFromFront 922
21.4.8 List Method removeFromBack 923
21.4.9 List Method print 924
21.4.10 Creating Your Own Packages 924
21.5 Stacks 928
21.6 Queues 932
21.7 Trees 935
21.8 Wrap-Up 942

22 GUI Components: Part 2 953


22.1 Introduction 954
22.2 JSlider 954
A02_DEIT7806_SE_10_TOC.fm Page 18 Monday, July 7, 2014 11:59 AM

18 Contents

22.3 Understanding Windows in Java 958


22.4 Using Menus with Frames 959
22.5 JPopupMenu 967
22.6 Pluggable Look-and-Feel 970
22.7 JDesktopPane and JInternalFrame 975
22.8 JTabbedPane 978
22.9 BoxLayout Layout Manager 980
22.10 GridBagLayout Layout Manager 984
22.11 Wrap-Up 994

23 Concurrency 999
23.1 Introduction 1000
23.2 Thread States and Life Cycle 1002
23.2.1 New and Runnable States 1003
23.2.2 Waiting State 1003
23.2.3 Timed Waiting State 1003
23.2.4 Blocked State 1003
23.2.5 Terminated State 1003
23.2.6 Operating-System View of the Runnable State 1004
23.2.7 Thread Priorities and Thread Scheduling 1004
23.2.8 Indefinite Postponement and Deadlock 1005
23.3 Creating and Executing Threads with the Executor Framework 1005
23.4 Thread Synchronization 1009
23.4.1 Immutable Data 1010
23.4.2 Monitors 1010
23.4.3 Unsynchronized Mutable Data Sharing 1011
23.4.4 Synchronized Mutable Data Sharing—Making Operations Atomic 1016
23.5 Producer/Consumer Relationship without Synchronization 1018
23.6 Producer/Consumer Relationship: ArrayBlockingQueue 1026
23.7 (Advanced) Producer/Consumer Relationship with synchronized,
wait, notify and notifyAll 1029
23.8 (Advanced) Producer/Consumer Relationship: Bounded Buffers 1036
23.9 (Advanced) Producer/Consumer Relationship: The Lock and
Condition Interfaces 1044
23.10 Concurrent Collections 1051
23.11 Multithreading with GUI: SwingWorker 1053
23.11.1 Performing Computations in a Worker Thread:
Fibonacci Numbers 1054
23.11.2 Processing Intermediate Results: Sieve of Eratosthenes 1060
23.12 sort and parallelSort Timings with the Java SE 8 Date/Time API 1067
23.13 Java SE 8: Sequential vs. Parallel Streams 1069
23.14 (Advanced) Interfaces Callable and Future 1072
23.15 (Advanced) Fork/Join Framework 1076
23.16 Wrap-Up 1076
A02_DEIT7806_SE_10_TOC.fm Page 19 Monday, July 7, 2014 11:59 AM

Contents 19

24 Accessing Databases with JDBC 1087


24.1 Introduction 1088
24.2 Relational Databases 1089
24.3 A books Database 1090
24.4 SQL 1094
24.4.1 Basic SELECT Query 1094
24.4.2 WHERE Clause 1095
24.4.3 ORDER BY Clause 1097
24.4.4 Merging Data from Multiple Tables: INNER JOIN 1098
24.4.5 INSERT Statement 1100
24.4.6 UPDATE Statement 1101
24.4.7 DELETE Statement 1102
24.5 Setting up a Java DB Database 1102
24.5.1 Creating the Chapter’s Databases on Windows 1103
24.5.2 Creating the Chapter’s Databases on Mac OS X 1104
24.5.3 Creating the Chapter’s Databases on Linux 1105
24.6 Manipulating Databases with JDBC 1105
24.6.1 Connecting to and Querying a Database 1105
24.6.2 Querying the books Database 1109
24.7 RowSet Interface 1122
24.8 PreparedStatements 1124
24.9 Stored Procedures 1140
24.10 Transaction Processing 1140
24.11 Wrap-Up 1141

25 JavaFX GUI: Part 1 1149


25.1 Introduction 1150
25.2 JavaFX Scene Builder and the NetBeans IDE 1151
25.3 JavaFX App Window Structure 1152
25.4 Welcome App—Displaying Text and an Image 1153
25.4.1 Creating the App’s Project 1153
25.4.2 NetBeans Projects Window—Viewing the Project Contents 1155
25.4.3 Adding an Image to the Project 1156
25.4.4 Opening JavaFX Scene Builder from NetBeans 1156
25.4.5 Changing to a VBox Layout Container 1157
25.4.6 Configuring the VBox Layout Container 1158
25.4.7 Adding and Configuring a Label 1158
25.4.8 Adding and Configuring an ImageView 1158
25.4.9 Running the Welcome App 1159
25.5 Tip Calculator App—Introduction to Event Handling 1160
25.5.1 Test-Driving the Tip Calculator App 1161
25.5.2 Technologies Overview 1161
25.5.3 Building the App’s GUI 1164
25.5.4 TipCalculator Class 1168
25.5.5 TipCalculatorController Class 1170
Discovering Diverse Content Through
Random Scribd Documents
omaisuuteni, eipä tuota ollut ihan vähän, ja läksin kotiin. Kaksitoista
vuotta on kulunut siitä, kun läksin Suomesta, mutta ei ole vaimoani
eikä lastani kuulunut. Alussa luulin hänen muuttaneen Ruotsiin,
mutta sitte sain tietää, että hän oli muuttanut tuonne ylämaahan
Kiiskilään, synnyinkotiini. Kävin siellä pastorinvirastossa, ja selailipa
pastori kaikkia kirjojansa läpikotaisin. Turhaa! Ei hän niissä ollutkaan.
Kirkkoherra sanoi apumiehensä, erään Hultila nimisen herran,
juopotelleen ja hutiloineen, niin ettei viimevuotisiin kirjoihin ollut
luottamista. Varmaa vain on, että ne poissa ovat.

Veikkoliini oli lopettanut surullisen kertomuksensa. Vellamo


proomulla syntyi hiljaisuus, hiljaisuus semmoinen, että kuultiin
lainetten loiskinaa sen kahnaantunutta keulalaitaa vasten. Veikkoliini
tuijotti luopumatta alas veteen; näytti siltä, kuin olisi koko hänen
huomionsa kääntynyt noihin rasvaisiin vaihteleviin koneöljyleveihin,
jotka pyörivät ja hyppelivät virrassa pysyen aina pinnalla, vaikka
laineet ja virta niitä kuljetti. Kovin liikutettuna istui Matti, nojaten
leveätä leukaansa takkuiseen isoon käteensä; hän oli kokonaan
unhottanut piippunysänsä. Hänen päätänsä painoi pohjalasti, joka ei
ollut tavallista — ajatuksia.

— Ota vastaan — kuka perkele on aluksessa päällikkönä, ota


vastaan, saakelin myyrät, makaatko, huusi samassa käheä
vihastunut ääni. Eräs kanavahöyry oli juuri siltauntumaisillaan, ja
virta ajoi sitä alaspäin, Vellamon peräkeulaa kohti, vaikka kone pani
takaperin täyttä väkeänsä. Vaan nyt oli Matti varuillaan, otti
mahtavilla kämmenillään ja karhunvoimillaan vastaan höyrylaivan
keulaa, niin että hänen jäntevät pohkeensa vapisivat ja leveä
selkänsä narskui, mutta höyry seisahtui kuni käskystä ja Vellamo jäi
vahingoittumatta.
— Olipa tuo väkevä veikele, huusi katteinin käheä ääni
komennussillalta. Sepä miehen kouraus, semmoista voimannäytettä
ei usein nähdä.

Veikkoliini istui ääneti ja umpinaisena, huolimatta parjauksista ja


kiitoksista. Kuten haukka iskee kyntensä kyyhkyseen, iski suru hänen
sydämmeensä joka kerta, kun hän tuli puhuneeksi menneestä
elämästään. Hän oli kadottanut poikansa ja vaimonsa, hän oli
kovettunut elämän koulussa, hän oli tullut synkkämieliseksi,
tunteettomaksi, itsekkääksi, mutta nyt hän taas monen vuoden
perästä koki tuota tunnetta, joka on kaikkia muita katkerampi, suru
kadonneesta onnesta. Mitä apua siitä, että hän pyrkii eteenpäin,
ylöspäin. Hänen elämänsä suuri tarkoitusperä, nousta herrassäätyyn,
oli saavuttamatta. Ja joskin hänen onnistui päästä tuohon
huimaavaan korkeuteen, johon hän lapsuudesta asti oli pyrkinyt,
mitä se häntä nyt enään hyödyttäisi. Jäisi hän sittekin yksinäiseksi. Ei
kenkään perisi hänen vaivansa palkkaa; perheetönnä, ystävätönnä
vaeltaisi hän maailman läpi. Mutta ei, vaikka veikatenkin! ja hän puri
yhteen laihat poskipielensä.

— Kas niin, menkäämme, Matti, sanoi hän ja nousi varovaisesti


mutta päättäväisesti seisaalle.

Molemmat toverit kulkivat verkalleen Kalarantaa ylöspäin, kojujen


ohi, joissa riippui kaikenlaista kirjavaa tavaraa, kääntyivät sitte ylös
tuota ahdasta ja pimeätä Mustaveljesmunkkien katua myöten ja
seisoivat ennen pitkää tuon jykeän ja korean tammioven edessä.
Suureen messinkilevyyn oli koukeroisin gootilaisin kirjaimin piirretty:
Heinrich Friedrich Blume, kauppaneuvos.

Ovi oli suljettu. Matti ja Veikkoliini vetäytyivät syrjään ja istuutuivat


liikakasvuisen ja huonossa hoidossa olevan puutarhan aidakkeen
jalustalle. Puoleksi kuihtunut seljapensas ulotti pisimmät oksansa
aidakkeen yli, levittäen kukkaisloistoaan kadun yleisölle, kujan
likaisille, isoäänisille lapsille. Toinen neljännestunti toisensa perästä
kului. Veikkoliini tuijotti äänetönnä eteensä, kuten aamun yllättämä
huuhkaaja. Mattia alkoi odottaminen väsyttää, hän haukotteli vähän
väliä ja ihmetteli, kuinka herrasmiehet saattavat vetää unta, vaikka
aurinko jo on korkealla taivaan laella.

Viimein herätti joku esine Matin huomiota. Seljapensaan oksissa oli


pieni risti-hämähäkki kutonut verkkonsa. Nyt se keskellä verkkoa,
pieneksi palleroksi kipertyneenä, istui odottamassa, eikö tuo
pitkäkoipinen, laiha vaaksiainen, joka lenteli hitaasti seljapensaan
lehtien ja hedelmäumppujen välillä, tarttuisi viritettyihin satimiin.
Matti seurasi tarkkaavaisesti vaaksiaisen liikkeitä. Eipäs aikaakaan,
kun se jo oli tarttunut verkkoon. Kuta enemmin se sätkytteli, sitä
pahemmin se seikkasi pitkät koipensa verkkoon. Hämähäkki oli
varuillaan hyökkäsi esille oikealla hetkellä, sitoi sitkeän, hienon
langan siellä, silmukan täällä, teki solmun toisessa paikassa, veti
lujemmaksi toisessa, ja sitte se rohkeasti hyökkäsi ison kömpelön
vastustajansa kimppuun. Ja vasta silloin kun vaaksiainen oli oikein
sidottu ja pauloitettu lopetti se hengen uhriltaan.

— Kas niin, sanoi Veikkoliini, menkäämme sisään nyt, konsuli on


tullut.
III.

Molemmat asioitsijat astuivat etehiseen. Ilma siellä oli kaupungin


vanhassa osassa tavallisen Viipurin-ilman mehua. Haisi homeelle ja
kostealle, kuten ainakin kolmannentoista vuosisadan linnassa.
Laveata, kohtalaisen siistiä porraskäytävää myöten astuttiin ylös
isoon konttorisuojaan, jonka pitkäpuoli oli varustettu useilla
ikkunoilla, jotka kaikki kääntyivät pohjoiseen. Kuusi isoa kalttopöytää
seisoi, kuten percheron hevoset hinkaloissaan, suojan pitkällä
seinällä, kiilloitettujen mahonkipuisten ristikkojen välillä. Pöytien
selkämät olivat sanomalehtien ja lukemattomien kirjetten peittäminä.
Jotkut yksinäiset kärpäset huvensivat aikaansa ja karkoittivat
nälänpuremat surisemalla ja hyppimällä harsoverhoisesta
kaasuvarresta riippuvan paperipalasen ympärillä.

Konttorihuoneisto oli tyhjä, paitsi prokuuran kirjoittajan sija. Tuolla


ylhäällä, korkealla istuimellaan ratsasti tuo väsymätön laskukone
Schönfeld, selaillen isoja mollinahkaan sidottuja folianttejaan,
verraten hintaluetteloja ja kirjeitä, huomioonsa ottamatta noita kahta
sisään astuvaa. Matti ja Veikkoliini saivat häiritsemättä odottaa ovella
hyvän aikaa.
Viimein kuultiin askeleita, ja tuskin sai Veikkoliini sanotuksi: "hän
se on", ennenkuin ovi aukeni ja sisään astui Emil herra, laihana ja
kalpeana, puettuna siniseen "pitsakki" nuttuun, jonka povitaskusta
surureunainen nenäliina älykkäästi pisti ulos. Nyt karkasi herra
Schönfeld seisaalle, muodosti sileäksi ajetun naamansa simaiseen
hymyyn ja lausui murtevalla ruotsinkielellä:

— Kuinka herra konsuli voi?

Tuo niin sanottu konsuli näytti levottomalta.

— Valitettavasti en oikein hyvin, vastasi hän. Mutta mitenkä on,


Schönfeld, oletteko ehtinyt katsella kirjoja, ja minkälainen on
tulos…?

— Herra konsuli, tulos ei ole hyvä, vastasi toinen vakavasti ja


matalalla äänellä. Mutta täällä on ihmisiä konttorissa.

Emil Blume käännähti itsensä. Hänen raukeat silmänsä ja veltot


piirteensä elehtyivät äkkiä.

— Mitä miehiä nuo on? kysyi hän.

— Toinen on meidän vanha asioimisystävämme, tukkienostelija


Veikkoliini, vastasi Schönfeld hymyillen ja pannen erityistä painoa
määräyssanalle. Toista en tunne. Parasta olisi kai, jos herra konsuli
itse puhuisi heidän kanssansa.

Emil herra teki niinkuin neuvottiin. Hän puhutteli Veikkoliiniä


samalla alentuvaisesti ja ammattiveljellisesti, ojensipa vielä hänelle
valkoisen kapean kätensäkin.
— Minä olen Emil Blume, uusi isäntä, koetan täyttää isäni sijan
asiain hoidossa. Se on kyllä vaikeata, mutta luotan hänen vanhoihin
apulaisiinsa. Kuinka Veikkoliini jaksaa, ja kuka on toverinne?

— Kiitoksia kysymästä, kyllähän terveenä nyt ollaan; tämä täällä


on muutoin se Matti Kiiskilä Pielisjärveltä.

— Mikä mies Kiiskilä on? kysyi herra Emil kääntyen jättiläisen


puoleen.

Matti hämmästyi tämmöisestä kysymyksestä. Koko ikänsä oli hän


ollut Blumen väkeä. Neljätoista kesää oli hän kuljettanut Luumen,
Pluumen eli Spluumen —minkä nimisenä tämä kauppahuone oli
tunnettu koko Karjalassa — neljätoista vuotta oli hän kuljettanut
heidän lauttojaan ja lossejaan, maksanut metsänmyyjille ja uittajille
kauppahuoneen rahoja kymmeniä tuhansia, nostanut palkkansa, ja
nyt tämä herra Blume ei tietänyt, kuka hän oli.

Matin tätä itsekseen kummastellessa, vastasi Veikkoliini:

— Hän on Vellamon kuljettaja.

— Minkä Vellamon?

Matin alaleuka painui velttona alas. Blume ei tuntenut omaa,


tammista, tasasaumaista, haaksirikkoutuneesta venäläisestä
kruununaluksesta rakennettua Vellamoaan. Paljaalta kummastukselta
ei hän nytkään ehtinyt vastata ennen Veikkoliiniä.

— Vellamo on yksi teidän, kauppahuoneen losseja. Kiiskilä on


kuljettanut sen sekä tusinan muitakin lankuilla lastattuja losseja
Uuraaseen. Hän on nyt paluumatkalla Suikkilan sahalle. Hän se on,
joka ensi talvena tulee johtamaan tuota isoa metsänhakkausta
Pallasvaaran ja Naulamaan erämaissa.

— Vai niin! Mitä muuta kuuluu sahalta, mitenkä metsänostot


sukeutuvat?

Veikkoliinin laihat kasvot, jotka aamullisesta mielenliikutuksesta


saakka olivat näyttäneet väsyneiltä ja veltoilta, elehtyivät nyt, ja
valppaan tarkkaavaisuuden ilme kuvautui niihin.

— Hinnat ovat nykyjään ulkomailla alhaalla, sanoi Veikkoliini


tutkien, mutta tietäähän herra, herra … herra sen paremmin kuin
minä.

— Niin, kyllä sen tiedän, sanoi nuori Blume miettiväisestä. Mutta


niiden ei pitäisi enään aleta, sanoo herra Schönfeld. Ja luoden apua
pyytävän katseen herra Schönfeldiin lisäsi hän:

— Miten on, luulenpa uskaltavamme ostaa metsää taas, vai mitä


ajattelette, herra Schönfeld? Kruunu on hakattavaksi leimauttanut
kaksikymmentä tuhatta puuta jossain Pielisjärven takana; eikö
Veikkoliini tahtoisi tavallisesta palkkiosta ottaa selkoa, minkä
arvoinen se metsä on?

Ennenkuin herra Schönfeld ehti sekaantua keskusteluun, sanoi


Veikkoliini:

— Tämä mies on juuri siltä seudulta, missä metsähuutokauppa on


pidettävä; hänellä itselläänkin on vähäinen metsä tuolla Pielisjärven
seudulla, ja hän aikoo juuri kysyä, mitä herra Blume voisi siitä
tarjota.
— Niin, herra Schönfeld, mitähän nyt sopii tarjota? kysyi nuori
Blume.

Herra Schönfeld, kynä korvansa takana, tuli nyt aidakkeelle.


Molemmat herrat kumartuivat konttoripöytää vasten ja alkoivat
ahkerasti laskemaan, josta Veikkoliini saattoi päättää, että Schönfeld
tahtoi maksaa niin vähän, kuin suinkin oli mahdollista, tahi
melkeinpä ei mitään. Puutavaran hinnat olivat alenneet Englannissa,
ruotsalaiset ja norjalaiset tarjosivat kaikkien mahdollisten hintojen
alle.

Lopputuloksena oli se, että Veikkoliini otti tutkiaksensa


minkälainen metsän asema oli, minkä arvoinen metsä oli, ja
lopullisesti sopiaksensa hinnasta ei puulta vaan koko metsästä, ja
sen mukaan voitaisiin sitte toimia.

— Onko Veikkoliinilla muuta sanottavaa?

— Olisihan kyllä sitäkin, vastasi hän arvelevaisesti, silittäen kerta


kerralta leukaansa. Kysyisin nöyrimmästi, voinko saada mitä minulla
on Teiltä saatavana.

Blume loi pikaisen levottoman silmäyksen herra Schönfeldiin.

Veikkoliini huomasi hänen levottomuutensa, mutta näytti itse


tyyneltä ja selittämättömältä tavallisuutensa mukaan.

— Katsokaa, sanoi hän, olen aikonut ostaa vähän maata nyt, kun
hinnat ovat halvat, ja tahtoisin sentähden — — —

— Niin, tietysti, herra Schönfeld — ja nuori Blume kääntyi


ensimmäisen konttorimiehensä puoleen, — laske selville Veikkoliinin
saatava.
Veikkoliini otti esille kuluneen muistiinpanokirjansa.

— Se on 7,800 markkaa, sanoi hän vitkaan, pannen korkoa


summalle.

— Niin, se käy yhteen, sanoi konttorinpäällikkö. Rahat ovat kyllä


pantuina liikkeeseemme ilman irtisanomisaikaa, mutta eihän
suinkaan Veikkoliini niitä heti tarvitse?

— Kyllähän minä ne tarvitsisin niin pian kuin mahdollista.

— No niin, siinä tapauksessa maksetaan ne teille kahden


kuukauden perästä, sanoi herra Schönfeld päättäväisesti.

Veikkoliini näytti arvelevaiselta ja silitti taas leukaansa monta


kertaa. Hän oli nähtävästi kahdella päällä.

— Vai niin, kahden kuukauden perästä siis. Maksetaanko rahat


Suikkilan sahalla, vai kuinka?

— Tietysti Suikkilan sahalla, tahi missä vain tahdotte. Ja Blume


laski molemmat miehet menemään jotenkin jyrkästi hirsienostelijan
mielestä.

Veikkoliini ja Kiiskilä menivät ulos. Kahta tuntia myöhemmin


lähdettiin matkalle pohjaanpäin. Mutta näinä kahtena tuntina
kuljeskeli Veikkoliini huolestuneena. Olisiko kuitenkin jotain perää
siinä, ettei kauppahuone Blume enään ollut niin vankka kuin ennen.
Varmistuakseen asiasta kävi hän etsimässä vanhaa ystäväänsä
Sergei Feodorovitschia, mutta tämä ei ollut kotona.

Matka Kiiskilään oli pitkällinen. Saimaan kanavaa ylöspäin vetivät


hevoset heidän proomujaan. Avaroilla vesillä olivat kauppahuoneen
hinausvenheet käytettävinä, mutta ei aina. Suuria varastoja piti vielä
muutaman viikon kuluessa kuljetettaman alas Uuraaseen, ja höyryt
olivat alinomaisessa työssä. Paikoittain täytyi sentähden
varppaamalla, purjehtimalla tahi soutamalla päästä eteenpäin, taikka
maattiin paikoillaan. Tällä ajalla ei Veikkoliini sanallakaan kajonnut
metsäkauppaan. Ei Mattikaan puhunut asiasta, koska hän ei tahtonut
näyttää liian hetaalta; hän muisti vaimonsa neuvoa.

Veikkoliini istui joka päivä tuntimääriä proomun ahtaassa


kastarissa laskemassa ja kirjoittamassa.

Istuen oikein taidepajan valossa, joka kirkkaana ja puhtaana


lankesi hänen kasvoillensa, käsillensä, toimi- ja konttorikirjoihinsa,
jättäen muut esineet puolihämärään, olisi hän näin ollut oivallinen
kaava hollantilaiselle laatumaalarille. Hänen kovat, ikäänkuin vaskeen
piirretyt kasvonsa, vaaleat selittämättömät silmänsä, jäntevät
kätensä, kaikki esitti sisällisen voiman ja valppaan älyllisyyden kuvan.
Hän vertasi muistiinpanojaan, laski ja arvioitsi. Ja ennenkuin sahalle
tultiin, oli hänellä asia selvillä. Jos niitä hintoja, joita nyt maksettiin
Englannissa, Ranskassa ja Hollannissa, verrattiin siihen, mitä
kauppahuone Blume viime aikoina oli maksanut metsästään ja
sahoistaan, niin oli päivän selkeää, että liike ei voinut kauan
kannattaa. Ja jos hinnat ensi keväänä vielä enemmän alenisivat, piti
kauppahuoneen olla vankka pysyäksensä pystyssä.

Mutta oliko kauppahuone vankka? Syitä oli kyllä vastata tähän


kysymykseen kieltämällä. Kun Veikkoliini liitti toisen toiseen ja
muistellessaan ettei hänen rahojaan heti hänelle maksettu, kävi hän
levottomaksi. Olivatko hänen työnsä hedelmät siis epävarmat? —
Mutta toiselta puolelta, voisiko kauppahuone Blume olla epävakaa?
Ei, se ei voinut olla mahdollista, satavuotinen, vankka, arvossa
pidetty, luotettava kauppahuone — ja kuitenkin? Mitenkä hän saisi
varman tiedon siitä, täydellisesti, selvästi, luotettavasti varman
tiedon? Hänen täytyi se saada, maksakoon mitä tahansa.

Eräänä iltana, kun syksytuuli oli kovasti ravistellut proomua, sanoi


hän "Vahvalle Matille": tänä-yönä makaamme Puumalan kylässä,
minä tahdon nukkua kylläkseni yhden yön. En kauemmin kestä tätä
jyskytystä proomussa.

— Niinkuin Veikkoliini tahtoo, vastasi Matti.

Puumalassa laskettiin siis ankkuriin, ja matkustajat menivät maihin


levätäksensä ison kylän tilavassa keskievarissa. Veikkoliini käveli
synkkänä kylässä koittaen varovaisesti kylän kauppiailta ja
liikemiehiltä urkkia, olivatko hänen epäilyksensä mielikuvituksen
luomia, tyhjiä houreita, vai oliko niissä perää. Hänen kysymyksensä
olivat kuitenkin niin hienoja, ettei kenkään niitä käsittänytkään. Ja
koska tavallisesti on niin, että luulemme mitä mielellämme
tahdomme luulla, tunsi Veikkoliini itsensä levollisemmaksi, ja hiukan
häpeissään itsestään, epäilyksistään ja mielikuvituksistaan, meni hän
levolle.

Hänen maattuaan sikeästi ja tuskaisia unia näkemättä, herätti


hänet auringon noustessa epäselvä, yksitoikkoinen jupina. Hän ei
laisinkaan muistanut missä hän oli, nosti varovaisesti päätään ja
katseli tähystellen ympärilleen.

Ja katsos, ikkunan edessä, mihin aurinko heitti jyrkeäpiirteisen,


kellervän valoneliön tupaan, makasi mies kyykistyneenä vanhalla
kuluneella viheliäisellä matolla. Hänen vieressään oli laattialla
kirjaeltu lakki. Hän taivutteli kaljua päätään, joka oli paljaaksi ajettu,
niin että iho tummansinisenä näkyi, ja korvat loistivat punaisina
auringonvalossa, seitsemän kertaa laattialle, ja nousi sitte taas
aamun valon vallassa. Hänen mustat silmänsä tuijottivat itäänpäin
harrasta intoa hehkuvina. Näytti siltä, kuin katsoisivat ne kaukaiseen
etäisyyteen, sadan maan ja sadan järven taakse, missä onnen ja
autuuden kruunu oli saavutettavissa. Kummallisia sanoja, "Medsjid ei
kooran, Medinet en Neebe" läksi kuiskinana hänen terävähuulisesta
suustaan.

Yhä nopeammin liikkui hänen huulensa, yhä innokkaammin mies


kumarteli. Nyt nosti hän kätensä, pani ne, täynnänsä kunnioitusta,
rinnalleen, seisoi hetkisen äänetönnä, loi silmänsä taivaaseen, niin
että silmänvalkeainen näkyi. Sen jälkeen otti hän laattialta pyöreän
lakkinsa, kääri yhteen viheliäisen mattonsa, pisti sen suureen
nahkapussiin ottaen samalla esille vähän sipulia, suolaa ja leipää
sekä alkoi aamustella.

Nyt nousi Veikkoliini, haukotteli ja liikutti jäseniään; toinen ei


näyttänyt edes huomaavan häntä.

— Hyvää huomenta, vieras, kuinka asiat käyvät?

— Kiitoksi, vastasi tataarilainen, ei paljo hyvin. Olen tämä vuosi


lähteny liikkeelle aikaisemmin, kuin olisi pitäny. Sianteurastus ei olla
vielä alkanu, harjakset tahto pysyy korkeassa hinnassa.

— Vai niin, te olette harjaksenostelija! Kuinka voitte saada kaikki


harjakset myydyiksi. Ompa teillä kauhea määrä niitä, kun ajatte niitä
haltuunne näin pitkin koko Karjalaa. Ja minkätähden ette osta
harjaksia Venäjällä.

— Niin, jupisi tataarilainen, asia olla se, että kaikki tehtaat


Tallinnassa ja Pietarissa tahto suomalaisi harjaksi. Sergei
Feodorovitsch Viipuris osta minult kaikki harjakset.

— Vai niin, te tunnette siis Sergei Feodorovitschin, kuinka hän


jaksaa?

— Minu vanha ystävä ja tuttava Sergei Feodorovitsch voi hyvin,


olla vain levoton, ku minä viime kerta näin häne; olla kaupas nuore
Blume kans, se olla huono kauppa, Blumen kauppa.

Veikkoliini karkasi äkisti seisaalle. Hän ei voinut hillitä itseään,


vaan vaaleni kovasti. Siis hänkin, Sergei Feodorovitschkin aavisti
pahaa. Ja Sergei Feodorovitschilla oli hyvät haistimet, hän vainusi
paremmin kuin karhukoira.

— Jäättekö kauaksi aikaa tänne, kysyi Veikkoliini nopeasti.

— Minä mene pois tämä päivä, mutta tule takasi ensi viikko.

— Kuulkaa, sanoi Veikkoliini epäillen ja kuiskaten, luotuansa


silmäyksen Mattiin, joka makasi rahilla; tahdotteko luvata minulle
yhden asian — — —olla puhumatta tuosta asiasta tänään tässä
kylässä, tarkoitan tuosta Blumesta.

Tataarilainen näytti kummastuneelta.

— Niin, ei minu tarvite puhu se, ei se minu koske, Jumala kiitos.

— Kiitoksia, sanoi Veikkoliini, meni pois Matin luo, herätti hänet ja


sanoi: nouse heti ja lähtekäämme matkaan.

Matti heräsi, katsoi kummastuneena ympärilleen ja teki niinkuin


Veikkoliini oli sanonut.
Veikkoliini meni suurimman levottomuuden vallassa alas
proomulle. Hänen täytyi olla yksin, ihan yksin saadaksensa miettiä
tätä asiata. Matin häärätessä köysien ja kaapelien kanssa meni
Veikkoliini alas ahtaaseen kastariin. Olihan siis perää kuitenkin siinä,
ettei Blume ollut luotettava, ja hän, hänpä oli pannut kaikki vaivalla
ansaitut rahansa siihen liikkeeseen! Hiki tihkui hänen otsallensa,
koko hänen sisuksensa hehkui, oli kapinassa. Hän ei tuntenut
nälkää, hän ei kuullut hinauslaivan räikeitä vihellyksiä, hän ei
huomannut, että proomu leiskui kuin täydessä myrskyssä, hän ei
kuullut että sade hakkasi proomun kantta. Mikä onneton kohtalo
vainosi häntä? Pitikö hänen siis menettää vaimonsa, lapsensa ja nyt
omaisuutensa, kalliin säästörahansa, kaikki mitä hän oli haalinut
kokoon monen pitkän vaivalloisen vuoden ajalla.

Kun myrsky hänen sisässään viimein oli tyyntynyt, alkoi


aprikoiminen päästä oikeuteensa. Mitä tuli hänen tehdä? Ainoastaan
yksi keino tarjountui. Mutta oliko oikeaa, oliko kunnollista valita se?
Hän ikäänkuin tunsi, että se päätös, jonka hän oli tekevä, jo valmiina
asui hänen sisässään. Se oli siinä siemenenä, se paisui, itui, kehitti
lehtensä, ja oli kyllä aikanansa puhkeava kukkaan, toimeen,
toimeen, joka hänet pelastaisi.

Mutta hän ei tahtonut jouduttaa tätä päätöstä, sen piti tulla noin
itsestään, hänen tahtomattaan, hän oli toimiva ikäänkuin
tarkoittamatta. Jos siis se, mitä hän oli tekevä, olisi pahaa, niin oli
siinä puolustusta itse tapauksessa. Ken ei ole hairahduksen ja
pikaistumisen alainen! Hän mietti miettimistään, ja jota enemmän
hän mietti, sitä vahvemmaksi ja päättäväisemmäksi hän tunsi
itsensä. Viimein sai hän kiinni oikeasta näkökohdasta. Olihan hänen
velvollisuutensa pelastaa omansa, valvoa omia etujansa; hänen piti
niin tehdä. Ja sen hän olikin tekevä. Jos siksi tuli, niin kyllähän hän
pelastuisi kuivalle maalle; kuinka toisten kävi, niin, se oli heidän
asiansa.

Tätä hän istui hautomassa monta tuntia. Vihdoin viimeinkin, kun


jo alkoi olla iltapuoli, nousi hän kannelle. Oli nyt tultu Pyhäselän yli ja
lähestyttiin verraten tasaista maata. Tuolla vasemmalla oli Joensuu
vinoine taloineen, mataloine aidakkeineen, jotka kävivät aaltoihin,
kaupunki kun on rakennettu ohuelle maakerrokselle, jonka alla on
kahdenkymmenen jalan paksuinen liejupohja.

Hinausvene vihelsi. Pielisen kanavan sulku avasi mustan,


mahtavan kitansa ja nielaisi hämärään pimeyteensä sekä Vellamon
että sen hinaajan. Nyt nousi vedenpinta tuossa mustassa
syvyydessä. Sulun ovet avattiin, ja höyryvene oli jälleen vapaa.

Joensuussa oli Veikkoliiniä odottamassa sähkösanoma, joka


peräytti aiotun metsäkaupan. Hän tuli iloiselle mielelle, sillä tämä
helpotti suuresti hänen omia tuumiansa.

Seuraavana päivänä jatkettiin matkaa pitkin kanavoitettua jokea,


kolkkojen vesiperäisten nevojen ja autioiden hietakankaitten välillä.
Kun yö saavutti, loikoi proomu ankkurissa syvässä lahdessa korkeain
Kolinvuorien jyrkkien haaraketten välillä.

Oli tultu mahtavalle Pielisjärvelle, joka seuraten harjujen suuntaa


luoteesta kaakkoon levittää vesipintaansa kymmenen peninkulman
pituuteen. Ankara länsimyrsky vinkui ja raivosi ylhäällä ilmassa,
mutta vedenpinta oli verraten tyyni. Matkustajat höyrysivät näet
eteenpäin niitten valtavien vuorien ja harjujen suojassa, jotka
kohoavat järven länsipuolella jopa kahdeksansadan viidenkymmenen
jalan korkeuteen vedenpinnasta. Vasta silloin, kun oli sivuttu
Marttilan niemeke, alettiin tuntea Pielisjärven huikentelevaa vettä,
sillä tähän päättyivät harjut. Ja nyt, nyt nuokkui ja survoi proomu,
kuten lastu vedellä. Ja kuitenkin, sanoi Matti, ei tämä ole mitään
verrattuna siihen, kun myrsky tulee pohjasta tahi etelästä puuskuen
pitkin koko pitkää järveä saarien ja rannan harjujen välitse.
Jumal'armahtakoon sitä lauttaajaa, joka silloin ei suojaan sopivaan
paikkaan ehdi. Myrsky repii hänen lauttansa rikki ja hän itse
musertuu pirstaleitten välille.
IV.

Seuraavana päivänä, eräänä pimeänä syksypäivänä, myrskyn vielä


vinkuessa ja sateen vihaisena iskiessä kastarin pieniä ikkunoita,
tulivat matkustajat myöhään illalla porille. Oli vaarallista kulkua
tämä, sillä väylä ei ollut viitattuna, mutta Matin paikantunto auttoi
häntä saarilla ja luodoilla palavien tulien avulla löytämään tietä; hän
sai nyt olla höyryaluksen oppaana.

Näitä tulia, jotka valaisivat heidän tietänsä, polttivat kalastajat.


Syksymyöhällä, kun myrsky vyöryy, kun luonto vanhana, väsyneenä
kuolemantautia sairastaa, silloin herää rakkaudenvietti muikussa,
Pielisjärven aarteessa, silloin se viettyy kutemaan raskaissa
harmaissa aalloissa vaahtovien rantojen likellä. Ja silloin jättävät
kalastajat kotinsa maatakseen vuorokausittain tuolla ulkona autioilla
saarilla ja luodoilla, laskeakseen pyydyksiänsä ja suolatakseen
saaliistaan. Näitten tulien avulla päästiin saarien, luotojen ja karien
välitse perille kylän satamapaikkaan.

Kiiskilän kylä sijaitsee joen varrella, joka Suomen rajan takana


olevasta järvestä lampien ja soitten läpi pyrkii Pielisjärveen.
Pantuaan proomun ankkuriin joen suuhun ja tarkoin lukittuaan
kastarin oven, astui Matti maalle. Tyytyväisyyttä ilmaiseva hymy
levisi hänen leveille uskollisille kasvoillensa hänen ajatellessaan, että
hän nyt, oltuaan poissa koko pitkän kuukauden, saisi jälleen nähdä
kotinsa ja omaisensa.

Äänetönnä meni hän Veikkoliinin kanssa keskievariin, hankki tälle


asunnon ja pestasi jotenkin renttumaisen näköisen mieshenkilön,
Iisakki Hultilan, joka yksin tylsänä istui tyhjässä huoneessa
kaljahaarikan ääressä, seuraavana päivänä saattamaan
metsänostajaa Kiiskilän metsään. Sitte sanottiin toisilleen hyvästi
pariksi päiväksi, jonka ajan kuluttua Matti saisi tiedot metsästään ja
sen hinnasta.

Herätessään varhain seuraavana aamuna, katsoi Veikkoliini ulos


keskievarin pienistä akkunoista. Hän oli ennen ollut näillä seuduilla,
mutta silloin toisissa asioissa ja ajatuksissa. Nyt kääntyi hänen
tähystelevä silmänsä ensin metsään. Tuolla se seisoi kauimpana
taivaanrannalla, kuten avaran ja valoisan taulun loistava, siintävä
kehys. Avara oli taulu, sillä keskievari sijaitsi ylhäällä Lieksavaaran
viimeisellä mäenkunnaalla Pielisjärven rannalla, ja valoisa se oli, sillä
rajuilma oli tauonnut ja syksyinen aurinko vielä kerran noussut
taivaalle säteilevän kirkkaana, niinkuin ei sumua eikä pilviä
milloinkaan olisi ollut.

Veikkoliini katseli seutua, joka näytti hyvin viljellyltä. Ompa se


onni, ajatteli hän itseksensä, saahan työvoimia täältä, joilla hongat
kaadetaan; jos vain metsä kelpaa, kyllä täällä on käsivarsia ja
kirveitä. Hän pukeutui nopeasti, sytytti piippunsa ja meni etehiseen
kestikievarilta tiedustelemaan, oliko hänen oppaansa jo valmis.
Hultila istui etehis-kuistissa laukku selässä, pitkävartiset,
nahkahihnoilla sidotut pieksusaappaat jalassa ja sauva kädessä,
valmiina milloin hyvänsä ottamaan osaa retkeen. Hänen ulkoasunsa
oli hiukan siistitty, hän ei näyttänyt tänään niin täydellisesti
kurjuuteen vajonneelta kuin eilen.

— Kaikki on valmiina, sanoi hän tervehtien. Emäntä on laittanut


evään, tässä se on, ja viinaa on hän myöskin pannut mukaan.

Viinaa mainitessa ilmaantui hetkeksi miehen vaaleille elottomille


kasvoille elonväre, joka tavallansa kuvasi tuota suloista sanaa,
Veikkoliini tätä huomatessaan, katsoi terävästi Hultilaan ja sanoi:

— Vai niin, onko viinaa mukana, siinä tapauksessa lienee parasta,


että minä itse otan purakon hoitaakseni.

Puolen tunnin kuluttua olivat matkamiehemme matkalla. Ensin


kulkivat he kylän läpi, joka oli oikeata karjalaismallia. Rakennukset,
jotka kuuluivat yhdelle perheelle ja suvulle, olivat rakennetut
kunnaiden kukkuloille yhteen kasaan pienin ryhmin. Metsä oli
hakattu pois. Ainoastaan muutama niveräpahkojen vaivaama koivu
tahi joku vanha pihlaja näkyi aittojen ja ulkohuoneitten ahtaissa
lomissa. Pellot ympäröivät taloja. Lähinnä navettaa, maanviljelyksen
emoa, kaiken kasvuvoiman antajaa, sijaitsi se vähäinen peltopala,
jossa pellava kesällä kasvoi pitkänä, sinisilmäisenä ja nuorteana,
jossa lantut ja muutamat tupakanvarret, ylellisyys-kasveja talonpojan
talossa, imivät maan hienointa mehua.

Kun kulkijamme olivat kulkeneet talojen ja peltojen ohitse,


saapuivat he yhteiseen hakaan. Kaikkialta kuului kulkusten ja
kellojen ääntä; kyläkunnan karja kävi täällä leppien ja pihlajien,
koivujen ja pajujen alla laitumella, etsien viimeisiä, pehmeitä
heinänkorsia, joita kesän aurinko ei vielä ollut kellastanut ja
kovettanut.
Ha'an sivuttuaan tulivat he metsään, joka tällä kohdalla viettää
itäänpäin; kauempana oli suo, jonka kautta joki juoksi; lavean, hallaa
synnyttävän ja viljelykseen kelpaamattoman suon takana, alkaa
uudestaan metsä, jatkuen luullakseni — Arkankeliin saakka! Täällä
jossain, pari peninkulmaa etäämmällä kulkenee tsaarinmaan raja.
Nähkääs, tämä on juuri satujen seitsenpeninkulmainen metsä.

Ja nyt mentiin yhä edelleen. Kestävyydellä, joka ei näyttänyt


tietävän mistään väsymyksestä, ravinnokseen käyttäen vettä,
suolattuja muikkuja ja leipää, kulkivat nämä kaksi miestä kompassin
avulla metsän läpi.

Yöllä lepäsivät he jonkun kaatuneen kuusen alla tahi jossakin


rappeutuneessa ladossa autiolla rohkalla. Kolme vuorokautta ristiin
rastiin metsää kaikille suunnille kuljettuansa, saatiin työ vihdoinkin
valmiiksi; metsä oli erinomaista ja, mikä oli vielä tärkeämpää, se
sijaitsi hyvin.

Kolmantena päivänä saapuivat miehet takaisin kylään, menivät


keskievariin, tilasivat saunan, lämmittivät kylmettyneet ja jäykenneet
jäsenensä ja istuivat nyt iltasilla keskievarissa höyryävän rommitodin
ääressä.

Puheltaessa kysyi Veikkoliini Iisakki Hultilalta, miten hän niin hyvin


tunsi metsän ja seudun.

Tämä ei kumminkaan näyttänyt kuulevan tahi käsittävän koko


kysymystä. Hänen ajatuksensa olivat muualla. Hänen silmänsä
loistivat ja välkkyivät, hänen sieraintensa laiteet liikkuivat ja hänen
veltot kasvonsa kokonaan olivat saaneet ryhtiä ja eloa, Hän näet
rakensi uutta totia, ja tätä toimittaessaan ei hänellä ollut aikaa, halua
eikä mieltä mihinkään muuhun. Kun hän oli saanut väkevän
laitoksensa valmiiksi, tyhjensi hän sen yhdellä kertaa ja sekotti
taaskin toisen. Sen hän vei mukaansa takkavalkean ääreen, joka
iloisesti leimusi suuressa pesässään, niin että tervaskannot ratisivat
ja paukkuivat. Hän istuutui niin lähelle tulta kuin mahdollista, hieroi
jänteisiä, laihoja jäseniänsä ja nautti, nautti tulesta kuin märkä koira,
lämpimästä alkoholista kuin nuori jumala. — Veikkoliinin uudestaan
kysymättä sanoi hän vähän ajan kuluttua:

— Niin, nähkääs, minä olen syntynyt täällä. Puhun kaikki teille. —


Sitten vaikeni hän.

— En ole milloinkaan puhunut elämästäni kenellekään. Taaskin


pitkä äänettömyys. Tehkää hyvin, istukaa tähän, tässä tulen ääressä
on niin hyvä, tässä on sijaa. Olkaa niin hyvä, mutta maljanne ensiksi,
maljanne!

— Nähkääs, olen ollut ylioppilaanakin ja vieläpä papinsällinä. Te


ihmettelette, miten olen joutunut siksi, mitä olen, sikunasihteeriksi,
maamittarin-apulaiseksi, kylänkirjuriksi, niin — minä kerron sen
teille. Se on oma vikani, ihan kokonansa minun oma vikani. Ja
vikani! — niin! Sen voin teille kertoa, sillä nähkääs, te ymmärrätte
minua.

— Nähkääs, ei pidä milloinkaan muuttaa säätyänsä, ei milloinkaan


pyrkiä toiseen säätyyn.

Veikkoliini kääntyi puhujaan päin:

— Mitä sanotte?

— Ei milloinkaan saa muuttaa säätyänsä, toisti hän uudestaan.

— Eikö parempaankaan?
— Ei milloinkaan! Se ei ole koskaan onneksi. Silloin pukeudutaan
uuteen pukuun, joka ei sovellu, sillä se on joko liian laaja tahi liian
ahdas.

Veikkoliini katsoi toveriinsa, joka oli kovin kumarruksissaan;


kyynärpäät lepäsivät polvilla ja leuka oli vaipunut käsien nojaan.
Kuparipuna valaisi hänen kasvojansa. Hän katsoi suoraan tuleen ja
näytti kuuntelevan hiilten rätinätä ja luikertamista yhteen kasaan.
Hän näytti niin vanhalta, väsyneeltä ja kuluneelta.

— Nähkääs, alotti hän vähän ajan kuluttua, näettekö miten


ututuhka lankeaa hehkuville hiilille, ensin kepeästi kuin untuva, sitten
yhä raskaampana kunnes vihdoin hiilet, jotka vielä silloin tällöin
kipenöivät ja liekehtivät, ovat melkein peittyneet utuisen, harmaan
peitteen alle, nähkääs, tuo on minun kuvani. Minäkin olen kerran
räiskynyt ja leimunnut. Ne olivat hauskoja liekkejä, jotka nousivat
korkealle ja jotka tahtoivat lämmittää ja valaista. Mutta sitten
vaihdoin kaiken tuon pois, josta jo olen sanonut, ettei saa sitä
vaihtaa pois, ja siitä pitäin sammun minä itse aina yhä enemmän,
ututuhka lankeaa yhä raskaampana päälleni.

— Niin, katsokaas, minä olen talonpoikaissukua. Minusta piti tulla,


jumala paratkoon, jotain parempaa, sillä lukeminen kävi kuin huihai.
Äiti työnsi ja isä auttoi, sisar ja veli kantoivat minua käsillään. Pappi
ja ruununvouti ottivat minun huostaansa. Olin pitäjän kunnia ja
ylpeys. Isä puhui kaikissa kokouksissa, että luin latinata. Äiti laski ja
tuumi, kuinka paljon ansaitsen, kuin kerran pääsen rovastiksi. Veljeni
ja sisareni kunnioittivat oppiani siihen määrään, että he sanoivat
minua "herraksi."

— Puutteita kärsittyäni pääsin kuin pääsinkin ylioppilaaksi. Nyt olin


vaihtanut talonpoikaissäätyni herrasmiehen säätyyn. Olin jättänyt
lämpöisen, vahvan takin ja ottanut ylleni avaran, mutta jäykän
puvun, joka minua kylmi. Olin kasvanut pois omaisteni piiristä,
sydämmestä ja rakkaudesta. He eivät minua enää ymmärtäneet,
minua ihmeteltiin ainoastaan. Toinen, jonka jätin pois, oli
äidinkieleni. Oli niinkuin pienen kultaisen pikarin vaihtaminen isoon
kullattuun haarikkaan. Ja kuitenkaan en oppinut ruotsia niin, että
olisin voinut sitä virheettömästi puhua. Mutta kaikkein hulluimmasti
kävi, kun rupesin vaihtamaan perittyjä talonpojan mielipiteitäni.

Hän joi loppuun, teki uutta totia ja ottaessaan kulauksen toisen


perästä, jatkoi hän puhettansa.

— Nähkääs, kun tulin yliopistoon, hyökyi vapamielisyys korkeana


aallokkona, pitkältä oli maihin, ja taivas oli kirkas. Koko mailma oli
vapaamielinen. Minun talonpoikais-vanhoillisuuteni suori tiehensä ja
sen seurassa viimeinen ankkuri, joka minua vielä pidätti. Nyt oli
kaikki ulkoa opittua, ei mitään elämästä saatua, kaikki siteet minun
ja omaisten välillä olivat katkaistut. Ja nyt piti minun lukea papiksi.

Hän vaikeni.

Halot olivat nyt hajonneet pieniksi, punaisiksi, hehkuviksi palasiksi,


jotka tasaisesti ja kuumasti valaisivat ilman liekkiä, yhtämittaisesti.
Pimeä ja hiljaisuus täyttivät ison huoneen, joka epävarmassa
valossaan näytti vielä suuremmalta ja kolkommalta. Hulttila istui
piirtelemässä sormellaan kuvioita ilmaan. Veikkoliini luuli hänen
näkevän näkyjä. Mutta kohta alkoi tuo entinen ylioppilas taaskin
kertomuksensa. Vaikka hän välillä sokkaroi, piti hän ajatuksensa
kuitenkin hyvin ko'olla.

— Kun ajattelen että tämä kaikki on tapahtunut kahdenkymmenen


vuoden kuluessa, niin näyttää se minusta käsittämättömältä. Tuntuu
kuin olisin Metusalemin ikäinen ja kuin vuosisatoja olisi jo kulunut
siitä, kuin ajattelin niitä asioita, joista teille olen kertonut. Tunnen
itseni niin vanhaksi ja tyhjäksi kuin tyhjä näkinkenkä järven rannalla.
Nähkääs, asianlaita on se, että olen oikeastaan lakannut jo aikoja
sitten elämästä, kaikesta olen nykyjään välinpitämätön, elän
vanhasta tottumuksesta, samoin kuin juonkin. Nähkääs, oikeastaan
ei juominen enää minusta maista. Mutta mitä minun piti puhuakaan,
ja hän alkoi änkyttää. Niin, miten minä luin papiksi. Aloin
jumaluusopintoni vapaamielisestä päästä. Tutkinnossa huomattiin
että osasin paremmin uskonnon vastustamista kuin kristinuskon
puolustusoppia, olin lukenut noita vapaamielisiä kirjoja ihan liiaksi. Ja
siten sain kerta toisensa perästä siipeeni, sillä huomattiin minut
sudeksi lammasten vaatteissa, palkkapaimeneksi, valkoiseksi
maalatuksi haudaksi. Sitä paitse, totta puhuakseni, join jo silloin. Ja
niin jouduin köyhyyteen ja kurjuuteen, nälkään ja likaan sekä
kylmään. Eräänä päivänä yksin istuessani, kurjassa majassani
Punavuorilla Helsingissä, tuli luokseni eräs toveri.

— Nyt on minulla jotain sinulle, sanoi hän. Nouse ylös, vanha


poika! Sinä saat taaskin maata haahkan-untuvissa, syödä ruokaa
joka päivä ja tuntea itsesi ihmiseksi. Sinä tulet suomalaiseksi
painoasiamieheksi Viipuriin. Lukea sanomalehtiä, ainoastaan lukea,
kuuletko, ja nostaa 2000 markkaa vuodessa. Tule huomenna
luokseni. Saat lainaksi takkini ja saapas-parin. Sitten menet
painoasiain Ylihallitukseen ja sitten on asia valmis, sitäpaitsi kaikki on
jo päätetty. Minä tulen itse sinua hakemaan, kuuletko. Niinhän se on,
tätä teikäläiset ette kyllä ymmärrä, mutta yhdentekevähän se on.

— En muista enää mitä toverilleni vastasin, mutta senlaiseksi en


vielä ollut muuttunut, että olisin suostunut ehdotukseen. Minä
pakenin.
— Seuraavana päivänä olin höyryn voimalla matkalla ja
neljäntoista päivän perästä olin kotona. Isä, äiti, sisar, veli, pappi ja
ruununvouti saivat ainoastaan häpeätä kaikesta toimestaan. Ja minä
sain kalliisti maksaa perustuslain mukaisesti määrätyn uskon
epäilemistä. Sen jälkeen olen elänyt kauheita vuosia. Jokaisesta
syömästäni leipäpalasta sain tietää, mitä se oli maksanut. Kaikki,
joka ennen oli ollut minulle ja omilleni kunniaksi, muuttui minulle ja
heille häpeäksi. Siitä ajasta saakka kannan nimeä, jonka jokainen
henkilö pitäjässä tuntee; olette varmaankin kuullut että minua
kutsutaan lutikaksi. Vietin surkeata elämää. Häpesin kerjätä ja ojaa
kaivaa en jaksanut. Elin jonkun aikaa papin kirjojen pitämisellä,
mutta…

Ja Hultilan mieliala pikaisesti muuttui; vakavasta muuttui hän


yht'äkkiä lystilliseksi ja nauraa kikersi.

— Sittenkuin huomattiin, että kirjoista olin jättänyt pois kauhean


joukon lapsia, antanut poikain muuttua tytöiksi ja päinvastoin,
sallinut muutamain elää toista sataa vuotta ja toisten kuolla liian
aikaiseen, niin sain eron myöskin siitä toimesta.

— Monta vuotta on nyt kulunut siitä ajasta, vanhempani ovat


menneet manalan majoille.

Hänen puheensa kävi yhä heikommaksi ja hitaammaksi sekä


sekavammaksi, sanat olivat kuin tervassa, ja pikaisesti, niinkuin
vanhain juoppoin käy, sai humala vallan.

— Jos minä olisin jäänyt talonpojaksi. — Jääkää talonpojaksi,


Veikkoliini, jääkää siksi mitä olette, on samaa kuin vaihtaa kultainen
pikari. —- — —Nähkääs, ruotsalaiset sanovat: talonpoika ei lähde
kolmannessa polvessa —nähkääs, jos teillä olisi poika, no no, niin —
nyt kaula sanoi seis, ja hän vaikeni äkkiä, hänen jänteensä tulivat
veltoiksi. Onnellisena ja tyytyväisenä vaipui hän sijallensa, hän oli
saavuttanut tarkoituksensa, humalan unohduksen.

Veikkoliini katseli häntä.

— Hänen ei ole onnistunut, sentähden on hän katkeramielinen. Ja


sitäpaitsi hän valehtelee, kaikki juopot valehtelevat. Jokin syy
surmalla pitää olla. Aina on se jokin muu, vaan ei milloinkaan viina.
— Turhaa puhetta se on, ainoastaan lorua.
V.

Seuraavana päivänä tapasivat Veikkoliini ja Matti toisensa


sopimuksen mukaan Kiiskilän keskievarissa.

Veikkoliini oli levoton; hän oli pyytänyt Hultilaa olemaan


kiijoitusmiehenä ja todistajana. Toinen vierasmies oli Jaakko Trast,
vanha kaartilainen, Vahvan Matin hyvä ystävä ja nykyinen
ammattiveli. Mutta toistaiseksi ainoastaan vanha sotamies oli
saapunut. Veikkoliini oli päättänyt tänään tehdä kaupan lopullisesti
millä keinolla hyvänsä. Ja vaikka Matti rapisteli kuin kala Veikkoliinin
nuotassa ja vieläpä lisäksi kuin vaikeasti suomustettava kala, niin veti
Veikkoliini saaliinsa lopulta maihin, ja paljoa ennen, kuin Matti itse
huomasikaan, olivat kaikki määräykset välikirjassa selvillä.

Yhdessä asiassa oli Matti kuitenkin peräytymätön. Veikkoliini tahtoi


että jättiläinen ottaisi koko hakkauksen ja tukkien kulettamisen
Veikkoliinin puolesta. Mutta Matti oli luvannut kuolleelle Blumelle
hoitaa kauppahuoneen metsän hakkausta, joka oli ainoastaan
muutaman peninkulman päässä pohjoiseen päin tästä; hän oli
luvannut vielä enemmänkin: kaikki tukit uitettaisiin hänen omalla
peräänkatsannollaan Pielisjärveä ja virtaista Pielisjokea myöten
Suikkilan sahalle.
— Ja sen käsitätte, Veikkoliini, sanoi hän, että kun on luvannut niin
täytyy pitää — "sanasta miestä, sarvesta härkää".

— Mutta, intti Veikkoliini, vanha Blumehan on kuollut ja…

— Niin on, mutta minä elän, vastasi Matti vihaisesti, ja minä pidän
mitä olen luvannut.

Veikkoliini ei uskaltanut kauvemmin pysyä ehdotuksessaan,


peläten menettävänsä kaikki. Tässä jättiläisessä löytyi omituinen
sekoitus; kesyttämätöntä voimaa ja taipuvaista lapsellisuutta, joka
näyttäytyi arvostelemattomassa luottamuksessa ja
myöntyväisyydessä. Tämä myöntyväisyys saattoi kuitenkin, sen tiesi
Veikkoliini, joskus loppua, etenkin jos Matti oli tyhjentänyt muutamia
laseja liiaksi tahi tullut suututetuksi. Ja pikaisesti, ennenkuin
aavistikaan, saattoi tuo myöntyväinen mielenlaatu kääntyä
vastustavaksi yksipäisyydeksi, jota ei kukaan, ei edes Matin
vaimokaan, joka muutoin kääri hänet sormensa ympärille, saanut
taipumaan.

Veikkoliini antoi sentähden, viisaasti kyllä, viimeisen ehdotuksensa


raueta, ollen tyytyväinen siihen, mitä hän oli voittanut. Kun hän
kerran saisi metsänoston päätetyksi, niin kyllä hän saisi miehiä puita
kaatamaan ja kuljettamaan. Ehkä Jaakko Trastin voisi taivuttaa
siihen.

Jaakko Trast oli tavattoman ruma mies, mutta vartaloltaan oikea


sotilas. Monta vuotta oli hän ollut sotamiehenä Suomen kaartissa,
ollut Bulgarian vapauttamis-sodassa, ottanut osaa moniin
tappeluihin, tullut haavoitetuksi Filippopolin luona ja maannut San
Stefanon lasaretissa pitkiä kuukausia sen jälkeen, kuin pataljoona oli
palannut isänmaahan. Mies, jonka nom de guerre oli Trast —
oikeastaan nimeltänsä Torvikoski — oli pitkäkasvuinen vartaloltaan,
varustettuna hyvin kippuralla nenällä, älykkäillä, harmailla silmillä ja
pitkillä, riippuvilla, mongolilaisilla viiksillä, joiden väliin piippunykä oli
kasvettunut ikuisiksi ajoiksi. Vaikeata oli ollut harjoitussääntöjen
opettaminen hänelle, mutta sittenkuin hän ne kerran oli oppinut, niin
ne olivat, samoin kuin piippukin, kasvettuneet häneen koko ijäksi.
Sotilasmaisuus oli muuttunut hänen toiseksi luonteekseen. Hän
liikkui itseliikkujan säntillisyydellä, niinkuin plutoona komennon
mukaan. Sopivassa ja sopimattomassa tilaisuudessa käytti hän
"smirnaansa" ja tervehti, niinkuin ihmiset sanoivat, paljaasta
kopeudesta sotilastavalla, kättä nostaen lakin laitaan. Lakki taaskin
oli aina vanha väritön, vaalennut kappale, joka, ostipa hän sen sitte
mistä tahansa, pian sai jonkunlaisen sotilasmaisen muodon.

Kaikki Veikkoliinin esitykset ja lupaukset Trastille olivat kuitenkin


turhat.

— Sotamies ei jätä toveriansa milloinkaan pulaan, oli hänen


säännönmukainen vastauksensa kaikkiin Veikkoliinin loistaviin
tarjouksiin. Matti ja minä olemme vanhoja tovereita, hän tarvitsee
minua nyt, oli kaikki, mitä Veikkoliini sai vastaukseksi.

Aamiaisenaika oli jo kumminkin aikoja sitten mennyt ohi; ei


Hultilaa eikä todistajaa vieläkään kuulunut. Veikkoliini oli kuin
kuumilla kivillä. Kunhan ei vaan jotain tapahtuisi ja koko asia
raukeaisi taaskin. Hänen levottomuuttaan lisäsi vielä keskievarin
yhtämittainen vaatiminen, että vieraiden piti mennä pois. Puolen
tunnin kuluttua kokoontuu köyhäinhoidon johtokunta, johon kuuluu
pappi ja siltavouti. Ja sitä ennen pitäisi kaupan olla päätetty;
muutoin voisivat molemmat, siltavouti ja kirkkoherra sekaantua
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebookluna.com

You might also like