booksbooks
Getting Started With Java Using Eclipse
Mastering the Language and the Development Platform
Bernhard Steppan
[Bernhard Steppan]
[Getting Started With Java Using Eclipse]
[Mastering the Language and the Development Platform]
All information, procedures and illustrations contained in this book have been prepared to the best of our knowledge and tested with care. Nevertheless, errors cannot be completely ruled out. For this reason, the information contained in this book is not associated with any obligation or guarantee of any kind. Consequently, the authors and publishers assume no responsibility and will not accept any liability, consequential or otherwise, arising in any way from the use of this program material - or any part thereof. Likewise, authors and publishers do not guarantee that described procedures etc. are free of third party intellectual property rights. The reproduction of common names, trade names, product designations, etc. in this work does not justify the assumption that such names are to be considered free in the sense of trademark and brand protection legislation and may therefore be used by anyone, even without special identification.
978-3-89576-561-2
978-3-89576-562-9
This work is protected by copyright.
All rights reserved, including those of translation, reprint and reproduction of the book or parts thereof. No part of this work may be reproduced in any form (photocopy, microfilm or any other process), not even for the purpose of teaching - with the exception of the special cases mentioned in §§ 53, 54 URG -, or processed, copied or distributed using electronic systems without the written permission of the publisher.
Contents Preface .......................................................................................... XXI PartIBasics ................................................................................. 1 1ProgrammingBasics ................................................................. 3 1.1Introduction............................................................................... 3 1.2TheLanguageoftheMachineWorld................................................... 4 1.3High-LevelProgrammingLanguages.................................................. 5 1.4DevelopmentEnvironment............................................................. 7 1.4.1Compiler......................................................................... 7 1.4.2Editor............................................................................. 7 1.4.3ProjectManagement........................................................... 7 1.5RuntimeEnvironment................................................................... 8 1.6Summary................................................................................... 8 1.7Literature................................................................................... 9 1.8Exercises................................................................................... 9 2TechnologyOverview 11 2.1Introduction............................................................................... 11 2.2Overview................................................................................... 12 2.2.1TheEarlyDaysofJava......................................................... 12 2.2.2TheGrowthPeriodofJava..................................................... 13 2.2.3ThePresenceAndFutureofJava............................................. 14 2.3WhyJava?.................................................................................. 15 2.3.1EasytoRead..................................................................... 15 2.3.2Object-Oriented................................................................ 15 2.3.3SafeAndRobust................................................................ 15
2.3.4VeryPowerful................................................................... 16 2.3.5UniversallyUseable............................................................ 16 2.3.6FreeofCharge.................................................................. 16 2.3.7OpenSource.................................................................... 16 2.3.8EasilyPortable.................................................................. 16 2.3.9EasilyExpandable.............................................................. 17 2.3.10EasytoDevelopAndTest...................................................... 17 2.4WhatBelongstoJava?.................................................................... 18 2.4.1JavaProgrammingLanguage................................................. 18 2.4.2JavaVirtualMachine........................................................... 18 2.4.3JavaClassLibraries............................................................. 20 2.4.4JavaDevelopmentTools....................................................... 20 2.5JavaVersions............................................................................... 21 2.6JavaEditions............................................................................... 21 2.6.1JavaStandardEdition.......................................................... 21 2.6.2JavaEnterpriseEdition........................................................ 21 2.6.3JavaMicroEdition.............................................................. 21 2.7Summary................................................................................... 22 2.8Literature................................................................................... 22 2.9Exercises................................................................................... 22 3Object-OrientedProgramming 23 3.1Introduction............................................................................... 23 3.2Overview................................................................................... 24 3.3Object...................................................................................... 25 3.4Class........................................................................................ 26 3.4.1Properties........................................................................ 26 3.4.2Methods......................................................................... 28 3.5Abstraction................................................................................ 30 3.6Inheritance................................................................................ 31 3.6.1BaseClasses..................................................................... 32 3.6.2DerivedClasses................................................................. 33 3.6.3MultipleInheritance........................................................... 33 3.7AccessProtection......................................................................... 34 3.8Relationships.............................................................................. 36 3.8.1RelationshipsWithoutInheritance.......................................... 36 3.8.2InheritanceRelationships..................................................... 38 3.9DesignFlaws.............................................................................. 40 VI Contents
Contents VII 3.10Refactoring................................................................................ 41 3.11Modeling................................................................................... 41 3.12Persistence................................................................................. 41 3.13Polymorphism............................................................................. 41 3.13.1StaticPolymorphism........................................................... 42 3.13.2DynamicPolymorphism...................................................... 42 3.14DesignRules............................................................................... 43 3.15Summary................................................................................... 43 3.16Literature................................................................................... 44 3.17Exercises................................................................................... 44 4DevelopmentEnvironment ......................................................... 45 4.1Introduction............................................................................... 45 4.2Installation................................................................................. 46 4.2.1OperatingSystem.............................................................. 46 4.2.2InstallJava....................................................................... 47 4.2.3InstallEclipse................................................................... 50 4.2.4InstallSamplePrograms....................................................... 55 4.2.5InstallationCheck.............................................................. 58 4.3EclipseIntroduction...................................................................... 60 4.3.1Overview......................................................................... 60 4.3.2Workbench...................................................................... 60 4.3.3Perspectives,ViewsandEditors.............................................. 61 4.3.4PackageExplorer............................................................... 62 4.3.5JavaEditor....................................................................... 63 4.3.6CodeFormatter................................................................. 66 4.3.7BuildSystem.................................................................... 68 4.3.8Debugger........................................................................ 68 4.3.9ModularStructure.............................................................. 69 4.3.10EclipseWorkspace............................................................. 70 4.3.11SoftwareUpdate................................................................ 72 4.3.12HelpSystem..................................................................... 73 4.4Summary................................................................................... 74 4.5Literature................................................................................... 74 4.6Exercises................................................................................... 75
VIII Contents PartIIJavaLanguage 79 5ProgramStructure 81 5.1Introduction............................................................................... 81 5.2Overview................................................................................... 82 5.3LanguageElements....................................................................... 83 5.3.1Comments....................................................................... 84 5.3.2Packages......................................................................... 84 5.3.3Classes........................................................................... 84 5.3.4Methods......................................................................... 85 5.3.5Statements...................................................................... 86 5.4StructureoftheProgram................................................................. 88 5.5ProgramFlow.............................................................................. 89 5.6ReservedKeywords....................................................................... 90 5.7Summary................................................................................... 91 5.8Tutorial..................................................................................... 92 5.9Exercises................................................................................... 92 6Variables .................................................................................. 93 6.1Introduction............................................................................... 93 6.2Overview................................................................................... 94 6.2.1VariablePurpose............................................................... 94 6.2.2VariableTypes.................................................................. 94 6.2.3VariableUsage.................................................................. 95 6.3LocalVariables............................................................................ 97 6.4Parameters................................................................................. 98 6.5InstanceVariables........................................................................ 99 6.5.1IndividualInstanceVariables................................................. 99 6.5.2InstanceVariable»this«........................................................ 100 6.6ClassVariables............................................................................ 102 6.7Constants.................................................................................. 104 6.8Summary................................................................................... 105 6.9Literature................................................................................... 106 6.10Tutorial..................................................................................... 106 6.11Exercises................................................................................... 107
Contents IX 7Statements 109 7.1Introduction............................................................................... 109 7.2Overview................................................................................... 110 7.2.1StatementPurpose............................................................. 110 7.2.2StatementTypes................................................................ 111 7.3Declaration................................................................................ 111 7.4Assignment................................................................................ 113 7.4.1JavaAssignmentStructure.................................................... 113 7.4.2JavaAssignmentsAreNotEqualtoMathematicalEquations............ 113 7.4.3Isx=yEqualtoy=x?.......................................................... 114 7.4.4CombinationofDeclarationandValueAssignment...................... 115 7.5Block........................................................................................ 116 7.6VariableCall............................................................................... 119 7.7MethodCall................................................................................ 120 7.8Summary................................................................................... 121 7.9Literature................................................................................... 122 7.10Tutorial..................................................................................... 122 7.11Exercises................................................................................... 122 8PrimitiveDataTypes ................................................................. 123 8.1Introduction............................................................................... 123 8.2Overview................................................................................... 124 8.2.1PurposeofPrimitiveDataTypes............................................. 124 8.2.2TypesofPrimitiveDataTypes................................................ 124 8.2.3UseofPrimitiveDataTypes................................................... 124 8.3IntegerDataTypes........................................................................ 128 8.3.1DataType»byte«................................................................ 128 8.3.2DataType»short«.............................................................. 129 8.3.3DataType»int«................................................................. 130 8.3.4DataType»long«............................................................... 131 8.4FloatingPointDataTypes............................................................... 131 8.4.1DataType»float«............................................................... 132 8.4.2DataType»double«............................................................ 133 8.5CharacterDataType...................................................................... 134 8.6BooleanDataType........................................................................ 134 8.7Summary................................................................................... 135 8.8Literature................................................................................... 136 8.9Tutorial..................................................................................... 136 8.10Exercises................................................................................... 137
X Contents 9ClassesandObjects 139 9.1Introduction............................................................................... 139 9.2Overview................................................................................... 140 9.2.1PurposeofaClass.............................................................. 140 9.2.2TypesofClasses................................................................. 141 9.2.3DefinitionofClasses........................................................... 141 9.2.4UseofClasses................................................................... 142 9.3AnonymousClasses...................................................................... 144 9.3.1DefinitionofConcreteClasses............................................... 144 9.3.2CreationofObjectsofaConcreteClass..................................... 146 9.3.3InnerClasses.................................................................... 147 9.3.4LocalClasses.................................................................... 149 9.3.5AnonymousClasses............................................................ 150 9.3.6Inheritance...................................................................... 152 9.4AbstractClasses........................................................................... 157 9.5Interfaces.................................................................................. 158 9.6Generics.................................................................................... 162 9.6.1DefinitionofGenericClasses................................................. 162 9.6.2CreationofGenericObjects.................................................. 163 9.7Summary................................................................................... 167 9.8Literature................................................................................... 167 9.9Tutorial..................................................................................... 167 9.10Exercises................................................................................... 168 10Enumerations 169 10.1Introduction............................................................................... 169 10.2Overview................................................................................... 170 10.2.1PurposeofEnums.............................................................. 170 10.2.2DefinitionAndDeclarationofEnums....................................... 171 10.2.3UsageofEnums................................................................ 172 10.3EnumClasses.............................................................................. 173 10.3.1Constructor..................................................................... 174 10.3.2Method»value()«............................................................... 174 10.3.3SeparateSimpleEnumClass................................................. 174 10.3.4SeparateExtendedEnumClass.............................................. 176 10.3.5InnerExtendedEnumClass.................................................. 177 10.4Summary................................................................................... 178 10.5Literature................................................................................... 178 10.6Tutorial..................................................................................... 179 10.7Exercises................................................................................... 179
Contents XI 11Arrays 181 11.1Introduction............................................................................... 181 11.2Overview................................................................................... 182 11.2.1PurposeofArrays............................................................... 182 11.2.2TypesofArrays.................................................................. 182 11.2.3UsageofArrays................................................................. 183 11.3Summary................................................................................... 187 11.4Tutorial..................................................................................... 188 11.5Exercises................................................................................... 188 12Methods ................................................................................... 189 12.1Introduction............................................................................... 189 12.2Overview................................................................................... 190 12.2.1MethodPurpose................................................................ 190 12.2.2MethodTypes................................................................... 191 12.2.3MethodDefinition............................................................. 192 12.2.4MethodUsage.................................................................. 195 12.3Constructors............................................................................... 197 12.3.1DefaultConstructors........................................................... 198 12.3.2ConstructorsWithoutParameters........................................... 199 12.3.3ConstructorsWithParameters............................................... 200 12.4Destructors................................................................................ 202 12.5Operations................................................................................. 204 12.6GetterMethods............................................................................ 205 12.6.1Definition........................................................................ 205 12.6.2Usage............................................................................. 207 12.7SetterMethods............................................................................ 208 12.7.1Definition........................................................................ 208 12.7.2Usage............................................................................. 209 12.8Summary................................................................................... 210 12.9Literature................................................................................... 211 12.10Tutorial..................................................................................... 211 12.11Exercises................................................................................... 211 13Operators 213 13.1Introduction............................................................................... 213 13.2Overview................................................................................... 214 13.2.1OperatorTypes................................................................. 214 13.2.2OperatorPrecedence.......................................................... 214
XII Contents 13.3ArithmeticOperators..................................................................... 215 13.3.1UnaryPlusOperator........................................................... 215 13.3.2UnaryMinusOperator......................................................... 216 13.3.3AdditionOperator.............................................................. 217 13.3.4SubtractionOperator.......................................................... 218 13.3.5MultiplicationOperator....................................................... 219 13.3.6DivisionOperator.............................................................. 219 13.3.7RemainderOperator........................................................... 220 13.3.8Pre-incrementOperator....................................................... 220 13.4RelationalOperators..................................................................... 223 13.4.1»Equalto«Operator............................................................ 224 13.4.2»NotEqualto«Operator....................................................... 224 13.4.3»LessThan«Operator.......................................................... 225 13.4.4»LessThanorEqualto«Operator............................................ 225 13.4.5»GreaterThan«Operator...................................................... 226 13.4.6»GreaterThanOrEqualTo«Operator....................................... 226 13.4.7TypeComparisonOperator................................................... 227 13.5LogicalOperators......................................................................... 230 13.5.1LogicalComplementOperator............................................... 230 13.5.2ANDOperator................................................................... 230 13.5.3OROperator..................................................................... 232 13.5.4TernaryOperator............................................................... 232 13.6BitwiseOperators......................................................................... 233 13.7AssignmentOperators................................................................... 233 13.8NewOperator............................................................................. 234 13.9CastOperator.............................................................................. 235 13.10AccessOperators.......................................................................... 237 13.10.1DotOperator.................................................................... 237 13.10.2LambdaOperator.............................................................. 239 13.11Summary................................................................................... 240 13.12Literature................................................................................... 240 13.13Tutorial..................................................................................... 240 13.14Exercises................................................................................... 240 14ConditionalStatements ............................................................. 241 14.1Introduction............................................................................... 241 14.2Overview................................................................................... 242 14.3»IfThenElse«Statement................................................................. 242
Contents XIII 14.4TernaryOperator.......................................................................... 243 14.5SwitchStatement......................................................................... 245 14.5.1SwitchStatementattheLevelofJava6...................................... 245 14.5.2SwitchStatementattheLevelofJava7...................................... 246 14.5.3YieldStatement................................................................. 247 14.5.4LambdaExpression............................................................ 248 14.6Summary................................................................................... 249 14.7Literature................................................................................... 249 14.8Tutorial..................................................................................... 249 14.9Exercises................................................................................... 249 15Loops ...................................................................................... 251 15.1Introduction............................................................................... 251 15.2Overview................................................................................... 252 15.2.1PurposeofLoops............................................................... 252 15.2.2TypesofLoops.................................................................. 252 15.3WhileLoop................................................................................. 253 15.4DoLoop.................................................................................... 254 15.5SimpleForLoop........................................................................... 255 15.6ExtendedForLoop....................................................................... 256 15.7Summary................................................................................... 257 15.8Literature................................................................................... 257 15.9Tutorial..................................................................................... 258 15.10Exercises................................................................................... 258 16PackagesandModules 259 16.1Introduction............................................................................... 259 16.2Overview................................................................................... 260 16.3Packages................................................................................... 260 16.3.1ClassImport..................................................................... 260 16.4Modules.................................................................................... 264 16.5Summary................................................................................... 267 16.6Tutorial..................................................................................... 267 16.7Exercises................................................................................... 267 17ExceptionHandling ................................................................... 269 17.1Introduction............................................................................... 269 17.2Overview................................................................................... 270 17.2.1Motivation....................................................................... 270
XIV Contents 17.2.2TypesofErrors.................................................................. 270 17.2.3UseofExceptionHandling.................................................... 270 17.3BaseClass»Throwable«.................................................................. 273 17.4Class»Error«............................................................................... 274 17.4.1Subclass»OutOfMemoryError«.............................................. 275 17.4.2Subclass»StackOverflowError«............................................... 277 17.5Class»Exception«......................................................................... 278 17.5.1Subclass»RuntimeException«................................................ 278 17.5.2Subclass»IOException«....................................................... 278 17.5.3Self-ProgrammedExceptions................................................. 279 17.6Summary................................................................................... 282 17.7Literature................................................................................... 282 17.8Tutorial..................................................................................... 283 17.9Exercises................................................................................... 283 18Documentation 285 18.1Introduction............................................................................... 285 18.2Overview................................................................................... 286 18.3LineComments........................................................................... 286 18.4BlockComments.......................................................................... 287 18.5DocumentationComments............................................................. 287 18.6Summary................................................................................... 288 18.7Literature................................................................................... 289 18.8Tutorial..................................................................................... 289 18.9Exercises................................................................................... 290 19Annotations ............................................................................. 291 19.1Introduction............................................................................... 291 19.2Overview................................................................................... 292 19.2.1AnnotationPurposes.......................................................... 292 19.2.2AnnotationTypes............................................................... 292 19.2.3PredefinedAnnotations....................................................... 293 19.2.4UseofAnnotations............................................................. 294 19.3CompilerControlAnnotations.......................................................... 296 19.3.1Annotations»Deprecated«.................................................... 296 19.3.2Annotations»SuppressWarnings«........................................... 298 19.3.3Annotation»Override«......................................................... 304 19.4Summary................................................................................... 307 19.5Literature................................................................................... 307 19.6Tutorial..................................................................................... 307 19.7Exercises................................................................................... 307
Contents XV PartIIIJavaTechnology 309 20DevelopmentProcesses ............................................................ 311 20.1Introduction............................................................................... 311 20.2Overview................................................................................... 312 20.2.1CorrelationBetweenPhasesAndActivities................................. 313 20.2.2Activities......................................................................... 314 20.2.3Tools.............................................................................. 315 20.3PlanningPhase............................................................................ 315 20.3.1OrderClarification............................................................. 315 20.3.2RequirementsCapture......................................................... 315 20.4ConstructionPhase....................................................................... 316 20.4.1Analysis.......................................................................... 316 20.4.2Design............................................................................ 317 20.4.3Implementation................................................................ 318 20.4.4Test............................................................................... 330 20.5OperatingPhase.......................................................................... 335 20.5.1Deployment..................................................................... 335 20.5.2Maintenance.................................................................... 337 20.6Summary................................................................................... 337 20.7Literature................................................................................... 338 20.8Exercises................................................................................... 338 21RuntimeEnvironment 339 21.1Introduction............................................................................... 339 21.2Overview................................................................................... 340 21.3Bytecode................................................................................... 341 21.4JavaVirtualMachine..................................................................... 344 21.4.1ArtificialComputer............................................................. 344 21.4.2Interpretermode............................................................... 345 21.4.3JITcompilermode............................................................. 346 21.4.4HotspotMode................................................................... 346 21.4.5GarbageCollector.............................................................. 347 21.5Libraries.................................................................................... 347 21.5.1NativeLibraries................................................................. 347 21.5.2ClassLibraries.................................................................. 348 21.5.3ResourcesAndPropertyFiles................................................. 348 21.6Portability.................................................................................. 349 21.6.1BinaryCompatibleBytecode................................................. 349
XVI Contents 21.6.2PortingPrerequisites........................................................... 349 21.7ProgramStart.............................................................................. 350 21.7.1StartScript....................................................................... 350 21.7.2NativeWrapper................................................................. 351 21.8JVMConfiguration........................................................................ 353 21.9Summary................................................................................... 353 21.10Literature................................................................................... 354 21.11Exercises................................................................................... 355 22ClassLibraries ......................................................................... 357 22.1Introduction............................................................................... 357 22.2Overview................................................................................... 358 22.2.1AreasofApplication............................................................ 359 22.2.2Reuse............................................................................. 359 22.2.3Documentation................................................................. 359 22.2.4LanguageExtension............................................................ 359 22.2.5TypesofClassLibraries........................................................ 359 22.3JavaStandardEdition.................................................................... 359 22.3.1BaseClasses..................................................................... 360 22.3.2Class»System«.................................................................. 368 22.3.3Threads.......................................................................... 371 22.3.4Streams.......................................................................... 372 22.3.5Properties........................................................................ 374 22.3.6ContainerClasses.............................................................. 376 22.3.7AbstractWindowingToolkit.................................................. 377 22.3.8Swing............................................................................. 386 22.3.9JavaBeans........................................................................ 389 22.3.10Applets........................................................................... 390 22.3.11JavaDatabaseConnectivity(JDBC).......................................... 390 22.3.12JavaNativeInterface........................................................... 391 22.3.13RemoteMethodInvocation................................................... 392 22.4JavaEnterpriseEdition................................................................... 393 22.4.1EntityBeans..................................................................... 394 22.4.2SessionBeans................................................................... 394 22.4.3MessageDrivenBeans......................................................... 394 22.4.4Interfaces........................................................................ 394 22.5JavaMicroEdition........................................................................ 395 22.6ExternalClassLibraries.................................................................. 396
Contents XVII 22.6.1ApacheSoftwareFoundation................................................. 396 22.6.2EclipseCommunity............................................................ 396 22.6.3SourceForge..................................................................... 396 22.6.4OtherOpen-SourceSoftware................................................. 396 22.6.5CommercialSoftware.......................................................... 397 22.7Summary................................................................................... 397 22.8Literature................................................................................... 398 22.9Exercises................................................................................... 398 23Rules ....................................................................................... 399 23.1Introduction............................................................................... 399 23.2Overview................................................................................... 400 23.3WritingConventions..................................................................... 401 23.4AccessProtection......................................................................... 402 23.4.1FourLevelsofAccessProtection............................................. 402 23.4.2AccessLevel»private«......................................................... 403 23.4.3AccessLevel»default«......................................................... 403 23.4.4AccessLevel»protected«...................................................... 403 23.4.5AccessLevel»public«.......................................................... 403 23.4.6CaseStudy....................................................................... 403 23.4.7ScopeofVariables.............................................................. 409 23.5EvaluationOrder.......................................................................... 413 23.5.1DotBeforeDash................................................................ 414 23.5.2DotBeforeDot.................................................................. 415 23.6TypeConversion.......................................................................... 417 23.6.1ImplicitConversion............................................................ 417 23.6.2ExplicitConversion............................................................ 419 23.7Polymorphism............................................................................. 422 23.7.1MethodOverloading........................................................... 422 23.7.2MethodOverriding............................................................. 424 23.8Summary................................................................................... 428 23.9Literature................................................................................... 428 23.10Exercises................................................................................... 429 24Algorithms 431 24.1Introduction............................................................................... 431 24.2Overview................................................................................... 432 24.2.1DevelopingAlgorithms........................................................ 432 24.2.2TypesofAlgorithms............................................................ 433
XVIII Contents 24.2.3UseofAlgorithms.............................................................. 433 24.3DevelopAlgorithms...................................................................... 433 24.3.1SortingAlgorithms............................................................. 433 24.3.2GraphicsAlgorithms........................................................... 434 24.4AlgorithmUsage.......................................................................... 442 24.4.1SortingAlgorithms............................................................. 442 24.4.2SearchAlgorithms.............................................................. 444 24.5Summary................................................................................... 445 24.6Literature................................................................................... 445 24.7Exercises................................................................................... 446 PartIVJavaProjects 447 25SwingPrograms 449 25.1Introduction............................................................................... 449 25.2Requirements............................................................................. 450 25.3AnalysisandDesign...................................................................... 450 25.3.1UserInterface................................................................... 451 25.3.2ProgramLogic.................................................................. 451 25.4Implementation........................................................................... 454 25.4.1StartEclipseWiththeWorkspace»Exercises«.............................. 454 25.4.2CreateNewJavaproject»SwingPrograms«................................. 455 25.4.3CreateNewclass»CourseStatisticsApp«.................................... 455 25.4.4ImplementClass»CourseStatisticsApp«.................................... 455 25.4.5CreateNewClass»MainWindow«............................................ 456 25.4.6ImplementingClass»MainWindow«........................................ 457 25.4.7ImplementingClass»CsvParser«............................................. 468 25.4.8ImplementingtheClass»TableFilter«....................................... 469 25.5Test.......................................................................................... 472 25.6Deployment............................................................................... 472 25.7Summary................................................................................... 474 PartVAppendix 475 26FrequentErrors 477 26.1Introduction............................................................................... 477 26.2JavaErrors................................................................................. 477 26.2.1CannotMakeaStaticReferenceToTheNon-StaticField................ 477
Contents XIX 26.2.2Outputofa»null«Value....................................................... 478 26.2.3NullPointerException.......................................................... 479 26.2.4MissingBreakinCaseStatement............................................. 481 26.2.5IncorrectComparison......................................................... 482 26.2.6UnhandledExceptions........................................................ 485 26.2.7NoClassDefFoundError........................................................ 486 26.2.8ClassNotFoundException..................................................... 486 26.3EclipseErrors.............................................................................. 486 26.3.1EclipseCouldNotBeStarted................................................. 486 26.3.2ChaoticEclipsePerspective................................................... 486 26.3.3MissingWindow................................................................ 487 26.4Summary................................................................................... 487 26.5Literature................................................................................... 487 27Glossary .................................................................................. 489 Index .............................................................................................. 491
Preface
Javaiscurrentlyundisputedlythemostimportantprogramminglanguage.Therefore, manywouldliketolearnJava.Unfortunately,gettingstartedisnoteasy,becauseprogrammingwithJavarequiresatleasttwothings:masteringtheprogramminglanguage and masteringadevelopmentenvironment.Thisisthereasonwhythisbookwaswritten.With thehelpofmanyexamples,itshowshowthelanguageisstructured.Inaddition,thebook usestheexampleoftheEclipsedevelopmentenvironmenttoteachyouhowtodevelop Javaprogramswiththistool.
Oh dear, five parts with 28 chapters and over 500 pages –at the end readers still think they can program me!
Thefirstpart»Basics«givesyoutheJavaandEclipsebasicknowledge.Thispartlaysthe programmingfoundations,givesyouanoverviewofJavatechnology,andshowsyouwhat isspecialaboutobject-orientedprogramming.AchapterabouttheEclipsedevelopment environmentcompletesthispart.
Inthesecondpart»JavaLanguage«everythingrevolvesaroundthesubtletiesoftheJava language.ThisiswherethefirstsmallJavaapplicationsarecreated.Thispartoffersa mixtureofknowledgepartandpracticalexercises.Attheendofeachchapter,youwillfind tasksthatyoucandoonyourown.Withthesolutionstothetasksattheendofthisbook youcheckthelearningsuccess.
Robertfromthemachineworldaccompaniesyouthroughthebook.
Javatechnologyisthefocusofthethirdpart»JavaTechnology«.Additionally,thispartintroducesyoutotherulesyoumustobservewhenprogramming,whatclasslibrariesare andwhatadvantagestheyhave.Inaddition,youwilllearnhowtotestprograms,what algorithmsareandhowtoprogramthem.
AlargerJavaprojectisthefocusofthefourthpart.Hereyouwillapplyalltheelementsfrom thepreviouspartsonanapplicationwithagraphicaluserinterface.Theprojectshowshow todevelopalargerapplicationpiecebypiecewiththeEclipsedevelopmentenvironment.
Thefifthpart,»Appendix«,concludesthisbookwithsolutionstothetasks,withbasicsof informationprocessingandachapteronthemostcommonmistakesthatcanoccurwhen workingwithEclipse.
ThePlot
Asaplot,Ibasedthebookonthe(fictional)programmingcourse»JavawithEclipse«taught byProfessorRothtofourstudents.Theprogrammingcourseisaccompaniedbytherobot named»Robert«and–amongmanyothers–mainlybythesefivecharactersthroughout thebook:
We accompany you with many programming examples around this programming course through this book and wish you already a lot of fun!
XXII Preface
TheprogrammingcoursewithLukas,Anna,ProfessorRoth,JuliaandFlorian
Who is the book for?
This book is aimed at active readers. You don’t want ready-made solutions, you want to program yourself. Without actively programming yourself and staying on the ball until your self-written program runs, you will not learn Java. The book contains a tempting number of ready programmed examples that you can run at the click of a button. Only reach for the sample solutions if you get stuck. First, try to enter the programs yourself and learn from the mistakes. Only by actively programming will you master Java and the Eclipse development environment.
Bonus Material
The book contains plenty of examples that can be easily imported into the Eclipse environment as solutions. You can easily download them from the Elektor publishing company homepage www.elektor.com/books/programming. Among these downloads, you will also find a bonus chapter, which is not printed due to space limitations. It explains the programming of so-called terminal programs.
Font Conventions
Various parts of the text are highlighted as follows for better readability:
Keywordsinbodytext
Keywordsinheadlines
Variablesinbodytext
Variablesinheadlines
Window(graphicaluserinterface) EclipseIDELauncher
GUIelement(graphicaluserinterface) Finish
Menu(graphicaluserinterface) File
Menucommand(graphicaluserinterface) Menu File New JavaProject Files
Directorypaths
Listing(sourcecodefromsampleprograms)
Programoutput
Preface XXIII
Meaning
Person
»Person«
TextPart
Datatypesinbodytext
Datatypesinheadlines
implements
»implements«
roland
»roland«
Samples.zip
C:/Programs/Eclipse
1 package
2 publicclass Robot{ 3(...) 4}
programmingcourse;
Result=true
http://eclipse.org (...) Duetospacelimitationspartofthesource codeismissing
URL
Acknowledgements
Iwouldliketothankeveryonewhosupportedmeinwritingthisbook:theElektorpublishingcompanyandmyeditorFerdinandteWalvaartforhistrustinmyworkandhisgreat patience.IwouldliketothanktheHanserpublishingcompanywhohasgivenpermission totranslatetheoriginalGermanmanuscript.
Asalways,mywifeChristianehasbeenverysupportiveofthisproject.Manythanksfor yourhelp!IwouldalsoliketothankAlinaNeacsu,whocleanedmybookmanuscriptof spellingmistakes.ManythanksalsotoValeriyKachaev(Studiostoks),fromwhomthetemplatesoftherobotcartoonscome.
HowtoContactUs
Despitethegreatestcare,itisnotalwayspossibletoavoidoverlookingoneoranothererror inabook.Ifyoufinderrors,havesuggestionsforimprovement,orquestions,justsendme ane-mailat java-eclipse@steppan.net .Iwillansweryourquestionsassoonaspossible andtrytoincludeyoursuggestionsforimprovementinupcomingeditions.Youcanfind themostrecentadditionsandfurtherinformationat http://www.programmingcourse.net NowIhopeyouenjoyreadinganddevelopingyourJavaprogramswithEclipse!
BernhardSteppan
Wiesbaden,March2023
XXIV Preface
PARTI Basics
Tobeabletodevelopcomputerprograms,youneedtomasterthebasics.Chapter»ProgrammingBasics«laysthegroundworkforprogrammingJavaapplications.Inchapter 2, »TechnologyOverview«,youwilllearnwhatJavahasincommonwithotherprogramming languagesandhowJavadiffersfromotherlanguages. Did you know that Java is slang for co ee? And that Java is not just a programming language?
Sure!
Afterwards, it continues with the chapter »Object-Oriented Programming«. It shows what is special about object-oriented programming and how object-oriented programs are structured. The chapter »Development Environment« concludes this part of the book with the installation of the development environment and introduction to »Eclipse«.
2
Figure 1: To develop computer programs, you need to master the basics.
1 ProgrammingBasics
1.1Introduction
Programmingmeanswritingcomputerprograms.Computerprogramsconsistofoneor morecommandsinaprogramminglanguage.TherobotnamedRobertpresentsasimple JavaprogramtothestudentsinProfessorRoth’sprogrammingcourse(Figure 1.1).
class Hello { public static void main(String[] args) { System.out.print("Hello!"); } }
This simple Java program outputs the greeting »Hello!« on the screen. The text of the program »class Hello …« is called source code.
Figure 1.1: Robert from the machine world is the expert for machine programs.
Thestudentsoftheprogrammingcoursethinkthattherearealotofinstructionsforsucha simpleprogram.AnnawouldliketoknowfromProfessorRothwhetheritcouldbesimpler:
Why do computers have to be programmed in such a complicated way? Why can't you just tell them what you want, like Alexa and Siri?
»EvenAlexa,CortanaandSiri«,saysProfessorRoth,»arejustcomputerprograms.«These programsweredevelopedsothathumanscancontrolcomputersviaspeech.ButAlexa &Co.canonlydothefewtasksforwhichtheywerespeciallyprogrammed.Ifyouwant thecomputertoperformothertasks,suchaswordprocessing,youhavetowriteaspecial programforit.TheseprogramscanbedevelopedinJava,forexample.
1.2TheLanguageoftheMachineWorld
Whenwespeakofcomputerstoday,wealwaysmean digital computers.Thesemachines understandonlytheirdigitalmachinelanguage.Digitalmeansthatthecomputeruses binarycodeforallinformation.Therefore,thecomputer’smachinelanguageconsistsonly ofasequenceofzerosandones.
However,thecomputer’smachinelanguage,withitssequencesofzerosandones,isextremelydifficultforhumanstounderstand.Toprogramcomputersdirectlyinmachine codewouldthereforebecompletelyabsurd.Itwouldtakeaverylongtimeandtheprobabilityoferrorswouldbehigh.
Ifyouwanttoprogramthecomputerclosetothemachine,youuseanauxiliarylanguage. Thisauxiliarylanguageiscalledassemblerlanguageorassemblerforshort.ProfessorRoth presentsasimpleexampletohisprogrammingclass.LiketheJavaprogrambefore,itsimplyoutputsthecharacterstring»Hello!«onthescreen(Figure 1.3).
ProfessorRoth’sprogrammingcoursefindstheassemblylanguageprogramquitedifficult tounderstand.Howcouldonlyprogrammerslearnsuchaterriblelanguage?Theanswer issimple,because,intheearlydaysofcomputerstherewerenohigh-levellanguageslike
4 1ProgrammingBasics
Figure 1.2: Is it really still appropriate today to type in programs?
Java.Programmershadtopaycloseattentiontothecomputer’sprocessorswhentheyprogrammedthemachineinassemblylanguage.
An assembler program is specific to the hardware of a computer. It is therefore difficult to transfer from one type of computer to another.
org 100h start: mov dx,hallo
mov ah,09h int 21h
mov al, 0 mov ah,4Ch int 21h section .data hallo: db 'Hello!', 13, 10, '$'
Assembler programs are much longer compared to functionally equivalent Java programs. They consist of many small-part commands which, taken alone, do little. Therefore, one needs many of these commands to write a larger program. This program is written specifically for one type of computer. It is difficult to transfer to another type of computer. Besides the high cost of developing such programs, a major disadvantage of the assembly language is that it is difficult to transfer from one type of computer to another. However, the small-part instructions do not have only disadvantages. They have the advantage that a good programmer can use them to create very lean and fast machine programs. They also often require far less main memory than comparable programs written in a high-level language.
1.3High-LevelProgrammingLanguages
Itseemstobesomehowbewitched:Computersonlyunderstandtheirspecificmachine language.We,ontheotherhand,withoutspecialprogrammingtraining,understandonly
1.3High-LevelProgrammingLanguages 5
Figure 1.3: This assembler program also outputs »Hello!«.
ournativelanguageandmaybeoneortwoforeignlanguages.Howcanwebridgethishuge gapbetweenthemachineworldandthehumanworld?
WecaneitherdevelopevenmorepowerfulprogramslikeAlexa,CortanaandSiri,sothat thecomputersexecuteeverythingwewant.Orwecanlearnthecomputer’slanguageifwe wanttodevelopspecialprogramsfortasksthatAlexa&Co.can’tdo–no,thosearen’tthe onlyoptions,becausethereis,fortunately,athirdway.
Programmingacomplexprograminassemblerisnolongerup-to-date.That’swhypeople startedveryearlytodevelopprogramminglanguageslikeJava.Theselanguagesforma bridgebetweenthe(formosthumans)difficulttounderstandmachinelanguageandthe (formostmachines)difficulttounderstandhumanlanguage.Theselanguagesarecalled high-levelprogramminglanguagesorhigh-levellanguagesforshort.
010101001101110
000111110101101110111
1111001110100001110
0011101010111011
I am so glad that there are high-level programming languages ...
High-level programming languages are much easier for a human to learn and understand than the language of the machine world. But how does it work? How do you translate a high-level language into the language of the machine world? For this purpose, a trick has been thought of. This trick is a special program that translates the source code of a highlevel language like Java into the language of the machine world. This program is called a compiler and is part of a development environment.
6 1ProgrammingBasics
Figure 1.4: High-level programming languages are mediators between humans and machines.
1.4DevelopmentEnvironment
1.4.1Compiler
ThecompilerisoneofthecorecomponentsofadevelopmentenvironmentlikeEclipse.It transfersthesourcecodeofaJavaprogramintothelanguageofthemachineworld.The sourcecodeisthetextthatwasseeninfigures 1.1 and 1.3.
1.4.2Editor
Intheeditoryouenterthesourcecodeofaprogramasinawordprocessor.Aneditoralso providesprogramdevelopmentsupport,suchasadviceonhowtofixtheerrorsthatare displayed.
1.4.3 Project Management
Java programs usually consist of a large number of files. So that you do not lose the overview, the Java development environment has a project management. It shows which files belong to a project.
1.4DevelopmentEnvironment 7
Menus
Editor with source code
Project Management Console
Toolbar
Figure 1.5: Editor, compiler and project management of the Eclipse development environment
1.5RuntimeEnvironment
Javaprogramsrequireaspecialruntimeenvironment.Inotherwords:Javaprogramsonly runwithanadditionalprogramonyourcomputer.Youdon’tnoticethisatfirst,becausethe Eclipsedevelopmentenvironmentcallsthisruntimeenvironmentinthebackgroundwhen yourunaJavaprogram.Tounderstandwhatthisruntimeenvironmentisallabout,turnto thenextchapter.ItshowsyouhowJavahasevolvedandwhyaJavaruntimeenvironment isnecessaryatall.
1.6Summary
Programmingmeanswritingcomputerprograms.Computerprogramsconsistofoneor morecommandsinaprogramminglanguage.Thesecommandsarewrittenintheformof atext.Inprogramming,thistextiscalledsourcecode.Computersexpectthecommands inmachinelanguage.We,ontheotherhand,speakinourhumanlanguage.Tobridgethis gap,computerscientistshavedevelopedhigh-levellanguages.Javaisoneofthesehighlevellanguages.
Computer programs consist of one or more commands. You can program these commands conveniently in Java – instead of in the difficult to understand machine language.
class JavaProgram { public static void main(String[] args) { System.out.print("My name is Robert!"); }
To translate a high-level language program into machine language so that the computer can execute it, you need an additional program. This translation program is called a compiler. The compiler is part of the development environment. This consists (among other things) still of an editor and project management. With the help of the editor, you write the source code of a program. The project administration administers the different files, which belong to a project.
8 1ProgrammingBasics
}
Figure 1.6: Computer programs consist of commands of a programming language
1.7Literature
BernhardSteppan:»ABriefHistoryofProgrammingLanguages«; https://www.programmingcourse.net/articles/a_brief_history_of_programming_languages
1.8Exercises
Todeepenyourknowledge,pleasegoto https://www.programmingcourse.net/books/java_ with_eclipse/programming_basics andworkontheexerciseslistedthere.Thereyouwill alsofindthesolutionstotheexercises.
1.7Literature 9
A
abstract 90
Abstractclass 157, 485
AbstractMethod 485
AbstractWindowingToolkit 373
Abstraction 30
Accesslevels 398
AccessProtection 34, 194, 398
Accuracy 126
Activities 310
Additionoperator 216
Aggregation 37
Algorithms 427
–use 438
Analysis 310
And-operator 226
annotation 150
Anonymousclass 150
Applets 12, 386
Arithmeticoperators 214
Arrays 181
Assemblerlanguage 4
assert 90
Assignment 113
Assignmentoperator 228
Association 37
Attribute 26
Attributes 26
AWT 373
B
BaseClass 32
Bitwiseoperators 228
Block 116
BlockComments 282
boolean 90, 134
BorderLayout 376
break 90
BuildSystem 68 byte 90, 128
C
Cannotmakeastaticreference... 473 case 90
Castoperator 231, 413 catch 90 char 90, 134
CharacterDataType 134
Characters 134
Class 23, 26, 163, 256, 485
class 90
Classattribute 485
ClassImport 256
ClassLibraries 353
Classmethod 485
Classmethods 191
Classoperation 485
Classvariable 485
ClassVariables 102
ClassNotFoundException 482
Comparativeoperators 222
Compile 321
Compiler 7, 68, 321
Composition 38
ConcreteClass 145
concreteclass 485
Conditionalstatements 237
ConfigurationFiles 370
const 90
Constant 27
Constants 104
ConstructionPhase 308
Constructor 28
Constructors 198
Constructorswithoutparameters 199
Container 372
Index
continue 90
Coprocessor 126
Createobjects 146
D
Debugger 68
Declaration 111, 146 default 90, 399
Defaultconstructors 198 derive 152
Derivedclasses 33
Design 310
DesignFlaws 40
DesignRules 43
Destructor 28
Destructors 203
DevelopingAlgorithms 428
DevelopmentEnvironment 7, 45
DevelopmentProcesses 307
Differenceoperator 217
DivisionOperator 218 do 90
DoLoop 250
DocumentationComments 283
double 90, 133
Dynamicimport 256
DynamicPolymorphism 42
E
EclipseDevelopmentEnvironment 50
EclipseIDE 50, 50
EclipsePlug-ins 69
EclipseProjectManagement 62
Editor 7, 63
else 90
Encapsulation 34, 194, 398
EnterpriseJavaBeans 389, 390
EntityBeans 390
enum 90
EnumerationType 170
EqualityOperator 223
EventControl 386
EventHandling 373
exports 90 extends 90, 152
F false 90
FileReader 368
FileWriter 369
final 90, 152, 156
finalize 203
finally 90
FixedPointNumber 128
float 90, 132 for 90
ForLoop,extended 252
ForLoop,simple 251
Function 204
Garbagecollector 343
Generalization 38, 486
Genericclass 163
Generics 163
GetterMethods 29, 205
Glossary 485
goto 90
Greateroperator 225
Greaterthanorequaltooperator 225
GridBagLayout 379
H
HelpSystem 73
High-levelprogramminglanguage 5
HomeInterface 390
HotJava 12
HotSwap 68
Identifier 27
if 90
IfStatement 238
implements 90
Import 256
import 90
Importstatement 256
InequalityOperato 223
Inheritance 31, 486
inheritance 152
Innerclass 147
InstallationEclipseIDE 50
Instance 25, 146, 486
instanceof 90
Instances 146
Instantiation 486
int 90, 130
Integer 128
IntegerLiterals 128
Interface 159
interface 90
Interfaces 159
Java2MicroEdition 390
492 Index
G
I
J
JavaClassLibraries 353
JavaDatabaseConnectivity 386
JavaEditor 63
JavaEnterpriseEdition 389
JavaKeywords 90
JavaME 390
JavaMicroEdition 390
JavaNativeInterface 387
JavaRuntimeEnvironment 335
JavaStandardEdition 355
java.base 356
JavaBean 386
JDBC 386
Jigsaw 13
JNI 387
JRE 335
JSE 355
JVM 340
JVMConfiguration 349
K
Keyword 90
Keywords 90
L
Lambdaoperator 234
LayoutManagers 376
Lessoperator 224
Lessorequaloperator 224
Linecomments 282
LocalClass 149
LogicalOperators 226
long 90, 131
Loops 247
M
Machinelanguage 4, 5
MessageDrivenBeans 390
Method 485
method 486
Methodbody 195
MethodCall 120
Methodimplementation 195
MethodOverloading 418
MethodOverriding 420
Methods 28, 189
Model 41
Modeling 41
ModularStructure 69
Module 260
module 90
Modules 260
Modulooperator 219
MultipleInheritance 33
N
Namespace 258
Namespaces 258
native 90
New 146
new 90
NewOperator 230
NoClassDefFoundError 482
Non-operator 226
NPE 475
null 90
NullPointerException 475
O
Oak 12
Object 23, 25, 357, 486
Objectvariable 99, 486
ObjectVariables 99
OOA/OOD 41
OpenJDK 13
Operation 29, 204
OperationPhase 308
Operator 213
Or-operator 227
Overloading 418
Overriding 420
P
Package 256
package 90
PackageExplorer 62
Packages 256
Parameter 98
Persistence 41
Perspective 61
Perspektive 61
PlanningPhase 308
Polymorphism 41, 418
Postdecrementoperator 221
Postincrementoperator 220
Predecrementoperator 221
Preincrementoperator 219
PreventOverriding 423
private 90, 399
Productoperator 218
Programming 3
Projectmanagement 7
Properties 26, 370
Property 26
Index 493
protected 90, 399
public 90, 399
Q
Questionmarkoperator 229
Quotientoperator 218
R
Refactoring 41
Relationship 36
Relationshipswithoutinheritance 36
Releasememory 343
RemoteInterface 390
RemoteMethodInvocation 388
Requirements 310 requires 90
Restructuring 41
return 90
RMI 388
Runtime 366
RuntimeEnvironment 335
Runtimeenvironment 8
S
SessionBeans 390
SetterMethods 28, 208
short 90, 129
Sign 126
SoftwareUpdate 72
Sorting 429, 438
State 27
StatefulSessionBeans 390
StatelessSessionBeans 390
Statements 109
States 27
static 90, 191, 486
StaticPolymorphism 42
strictfp 90
String 359
StringBuffer 363
SunMicrosystems 12
super 90, 155, 486
SuperclassObject 357
Swing 373, 382
SwingPrograms 445
switch 90
Switchstatement 241
synchronized 90
System 364
T
Test 310
this 90, 100, 154, 486
threads 367
throw 90
throws 90
Tools 311
transient 90
Translate 321
true 90
try 90
TypeCasting 413
Typeviolation 163
TypesofAlgorithms 429
Typesofloops 248
V
ValueAssignment 115
Valuerange 126
var 90
Variable 27
VariableCall 119
Virtualmachine 340
void 90
volatile 90
W
while 90
Whileloop 249
Workbench 60
Workspace 70
WrapperClass 363
WrapperClasses 361
WriteFiles 368
494 Index
Getting Started With Java Using Eclipse
Mastering the Language and the Development Platform
Many people would like to learn Java but getting started is not easy since programming with Java requires at least two things: mastering the programming language and the development environment. With the help of many examples, this book shows how the language is structured. In addition, it employs the Eclipse development environment as an example of a powerful tool to teach developing Java programs.
In Basics, the first part of the book, you acquire your Java and Eclipse basic knowledge. This part lays the programming foundations, gives you an overview of Java technology, and shows you what is special about object-oriented programming.
In the second part called Java Language, everything revolves around the subtleties of the Java language and this is where the first small Java applications are created, aided by a fine blend of the knowledge part and practical exercises.
Java Technology is both the name and the focus of the third part which also introduces you to the rules to observe when programming, what class libraries are and what advantages they have. In addition, you will learn how to test programs, what algorithms are, and how to program them.
The fourth part, Java Projects, enables you to apply all the previous elements in an application with a graphical user interface. The project shows how to develop a larger application piece by piece with the Eclipse development environment. The Appendix concludes with a section on frequent errors that can occur when working with Eclipse, and a Glossary.
All sample programs discussed in the book, and bonus material, are contained in an archive file which is available free of charge from the Publishers’ website www.elektor.com/books. On this site, search for: Java Eclipse. The tasks and solutions mentioned in the book are at: www.programmingcourse.net/courses/java_with_eclipse/.
Bernhard Steppan is a Java developer from the very beginning. He has written several C++ and Java books as well as numerous articles on programming languages, IT architecture, development tools, and other IT topics. Bernhard Steppan lives in Wiesbaden (Germany) and works as Chief IT Architect for DB Systel, the systems house of Deutsche Bahn.
Elektor International Media BV www.elektor.com booksbooks