├── .gitignore ├── README.md ├── images └── java-write-once-run-anywhere.png └── todo.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.ear 17 | *.zip 18 | *.tar.gz 19 | *.rar 20 | *.cmd 21 | *.classpath 22 | *.settings 23 | *.project 24 | *.mvn 25 | mvnw 26 | target 27 | *.DS_Store 28 | 29 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 30 | hs_err_pid* 31 | -------------------------------------------------------------------------------- /images/java-write-once-run-anywhere.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/in28minutes/java-cheat-sheet/db4bce2760e0fa5aa89630068323d3004a81cf53/images/java-write-once-run-anywhere.png -------------------------------------------------------------------------------- /todo.md: -------------------------------------------------------------------------------- 1 | ## Java Certification 2 | 3 | Source - https://education.oracle.com/education/pdf/JavaCertificationMap.pdf 4 | 5 | The Oracle Certification track now consists of levels 6 | – Associate (OCA) 7 | - Professional (OCP) 8 | - Master (OCM) 9 | - & a few others - Talk about complexity 10 | 11 | ### Java 8 12 | - Oracle Certified Associate, Java SE 8 Programmer 1Z0-808 13 | - Oracle Certified Professional, Java SE 8 Programmer II, 1Z0-809 14 | - You have other upgrade options from earlier versions 15 | - There is NO Oracle Certified Master for Java SE 8 16 | - The last master certification for Java - Oracle Certified Master, Java SE 6 Developer 1Z0-855 (includes an assignment and an essay) - is discontinued 17 | - The Oracle Certified Master, Java SE 6 Developer certification retires on November 30, 2016. 18 | - At this time, there is no plan to release a new version of the certification. Through careful job task analysis with the Java SE 8 certification release, it was determined that the OCM Developer role was no longer appropriate to keep as a separate certification and the that skills of that role should be included in the Programmer certifications. 19 | 20 | ## Upgrade to Java SE 8 OCP ( Java SE 6 and all prior versions) 21 | 22 | From https://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=5001&get_params=p_exam_id:1Z0-813 23 | 24 | 25 | #### TOPICS 26 | 27 | ##### Language Enhancements 28 | 29 | - Develop code that uses String objects in the switch statement, binary literals, and numeric literals, including underscores in literals 30 | - Develop code that uses try-with-resources statements, including using classes that implement the AutoCloseable interface 31 | - Develop code that handles multiple Exception types in a single catch block 32 | - Use static and default methods of an interface including inheritance rules for a default method 33 | 34 | ##### Concurrency 35 | 36 | - Use classes from the java.util.concurrent package including CyclicBarrier and CopyOnWriteArrayList with a focus on the advantages over and differences from the traditional java.util collections 37 | - Use Lock, ReadWriteLock, and ReentrantLock classes in the java.util.concurrent.locks and java.util.concurrent.atomic packages to support lock-free thread-safe programming on single variables 38 | - Use Executor, ExecutorService, Executors, Callable, and Future to execute tasks using thread pools 39 | - Use the parallel Fork/Join Framework 40 | 41 | ##### Localization 42 | 43 | - Describe the advantages of localizing an application and developing code that defines, reads, and sets the locale with a Locale object 44 | - Build a resource bundle for a locale and call a resource bundle from an application 45 | - Create and manage date- and time-based events by using LocalDate, LocalTime, LocalDateTime, Instant, Period, and Duration, including a combination of date and time in a single object 46 | - Format dates, numbers, and currency values for localization with the NumberFormat and DateFormat classes, including number and date format patterns 47 | - Work with dates and times across time zones and manage changes resulting from daylight savings 48 | 49 | ##### Java File I/O (NIO.2) 50 | 51 | - Operate on file and directory paths by using the Paths class 52 | Check, delete, copy, or move a file or directory by using the Files class 53 | Recursively access a directory tree by using the DirectoryStream and FileVisitor interfaces 54 | - Find a file by using the PathMatcher interface, and use Java SE 8 I/O improvements, including Files.find(), Files.walk(), and lines() methods 55 | Observe the changes in a directory by using the WatchService interface 56 | 57 | ##### Lambda 58 | 59 | - Define and write functional interfaces and describe the interfaces of the java.util.function package 60 | - Describe a lambda expression; refactor the code that uses an anonymous inner class to use a lambda expression; describe type inference and target typing 61 | - Develop code that uses the built-in interfaces included in the java.util.function package, such as Function, Consumer, Supplier, UnaryOperator, Predicate, and Optional APIs, including the primitive and binary variations of the interfaces 62 | - Develop code that uses a method reference, including refactoring a lambda expression to a method reference 63 | 64 | ##### Java Collections 65 | 66 | - Develop code that uses diamond with generic declarations 67 | - Develop code that iterates a collection, filters a collection, and sorts a collection by using lambda expressions 68 | - Search for data by using methods, such as findFirst(), findAny(), anyMatch(), allMatch(), and noneMatch() 69 | - Perform calculations on Java Streams by using count, max, min, average, and sum methods and save results to a collection by using the collect method and Collector class, including the averagingDouble, groupingBy, joining, partitioningBy methods 70 | - Develop code that uses Java SE 8 collection improvements, including the Collection.removeIf(), List.replaceAll(), Map.computeIfAbsent(), and Map.computeIfPresent() methods 71 | - Develop code that uses the merge(), flatMap(), and map() methods on Java Streams 72 | 73 | ##### Java Streams 74 | 75 | - Describe the Stream interface and pipelines; create a stream by using the Arrays.stream() and IntStream.range() methods; identify the lambda operations that are lazy 76 | - Develop code that uses parallel streams, including decomposition operation and reduction operation in streams 77 | 78 | ## Java New Features Course Objectives 79 | 80 | 81 | Introducing Lambda Expressions 82 | 83 | - Describing the purpose of an anonymous inner class 84 | - Describing drawbacks to anonymous inner classes 85 | - Describing the components of a lambda expression 86 | - Defining a functional interface 87 | - Creating programs that use lambda expressions 88 | 89 | A Case for Lambda Expressions 90 | 91 | - Discussing the reasons for adding lambda expressions to the Java language 92 | - Reviewing the standard way of extracting data in Java 93 | - Refactoring code to reduce redundancy 94 | - Refactoring code to use inner classes 95 | - Refactoring code to use lambda expressions 96 | - Listing the benefits of lambda expressions 97 | 98 | Filtering Collections with Lambdas 99 | 100 | - Iterating though a collection with forEach 101 | - Iterating through a collection using lambda syntax 102 | - Describing the Stream interface 103 | - Filtering a collection using lambda expressions 104 | - Calling an existing method using a method reference 105 | - Chaining multiple methods together 106 | - Comparing function and imperative programming 107 | - Defining pipelines in terms of lambdas and collections 108 | 109 | Using Built in Lambda Types 110 | 111 | - Listing the built in interfaces included in java.util.function 112 | - Determining true or false with a Predicate 113 | - Processing an object and return nothing with Consumer 114 | - Processing one object and return another with Function 115 | - Generating a new object with Supplier 116 | - Using primitive versions of the base interfaces 117 | - Using binary versions of the base interfaces 118 | 119 | Collection Operations with Lambda 120 | 121 | - Extracting data from an object using map 122 | - Searching for data using search methods 123 | - Describing the types of stream operations 124 | - Describing the Optional class 125 | - Performing calculations using methods 126 | - Describing lazy processing 127 | - Sorting a stream 128 | - Saving results to a collection using the collect method 129 | - Parallel Streams 130 | - Reviewing the key characteristics of streams 131 | 132 | Contrasting old style loop operations with streams 133 | - Describing how to make a stream pipeline execute in parallel 134 | - Listing the key assumptions needed to use a parallel pipeline 135 | - Defining reduction 136 | - Describing why reduction requires an associative function 137 | - Calculating a value using reduce 138 | - Describing the process for decomposing and then merging work 139 | 140 | Lambda Cookbook 141 | 142 | - Modifying a list using removeIf 143 | - Updating a list using replaceAll 144 | - Updating a map using computeIfAbsent, computerIfPresent, and merge 145 | - Sending the keys and values from a map to a stream 146 | - Reading a file to a stream 147 | - Reading a text file into an ArrayList 148 | - List, walk, and search a directory structure using a stream 149 | - Flattening a stream using flatMap 150 | 151 | Method Enhancements 152 | 153 | - Considering the importance of building good libraries 154 | - Using static methods in Interfaces 155 | - Using default methods 156 | - Understanding default method inheritance rules 157 | 158 | 159 | Using the Date/Time API: Working with Local Dates and Times 160 | 161 | - Listing the goals of the Date/Time API (JSR-310) 162 | - Creating and manage date-based events 163 | - Creating and manage time-based events 164 | - Combining date and time into a single object 165 | 166 | Using the Date/Time API: Working with Time Zones 167 | 168 | - Working with dates and times across time-zones and manage changes resulting from daylight savings 169 | 170 | Using the Date/Time API: Working with Date and Time Amounts 171 | - Defining and create timestamps, periods and durations 172 | - Applying formatting to local and zoned dates and times 173 | 174 | JavaScript on Java with Nashorn: Creating and executing shell scripts 175 | - Creating and execute shell scripts using JavaScript and Nashorn 176 | - JavaScript on Java with Nashorn: Writing JavaScript Applications 177 | - Developing JavaScript applications that leverage Java code using Nashorn 178 | - JavaScript on Java with Nashorn: Writing JavaFX Applications Using 179 | 180 | JavaScript 181 | 182 | - Running JavaScript script from Java applications usingJSR-223 183 | - Prototype JavaFX applications using Nashorn and JavaScript 184 | 185 | Intro to Mission Control 186 | 187 | - Describing JMX and Managed Beans with Mission Control 188 | - Monitoring CPU utilization with Mission Control 189 | - Analyzing JVM characteristics with Mission Control 190 | - Analyzing heap memory with Mission Control 191 | - Intro to Flight Recorder 192 | 193 | Describing the Java Flight Recorder 194 | - Describing the Java Flight Recorder Architecture 195 | - Starting a Java Flight Recording 196 | - Managing a Java Flight Recording 197 | - Analyzing a Java Flight Recording 198 | 199 | 200 | ## Java SE 6 Programmer Certified Professional 201 | 202 | Section 1: Declarations, Initialization and Scoping 203 | 204 | - Develop code that declares classes (including abstract and all forms of nested classes), interfaces, and enums, and includes the appropriate use of package and import statements (including static imports). 205 | - Develop code that declares an interface. Develop code that implements or extends one or more interfaces. 206 | - Develop code that declares an abstract class. Develop code that extends an abstract class. 207 | - Develop code that declares, initializes, and uses primitives, arrays, enums, and objects as static, instance, and local variables. Also, use legal identifiers for variable names. 208 | - Given a code example, determine if a method is correctly overriding or overloading another method, and identify legal return values (including covariant returns), for the method. 209 | - Given a set of classes and superclasses, develop constructors for one or more of the classes. Given a class declaration, determine if a default constructor will be created, and if so, determine the behavior of that constructor. Given a nested or non-nested class listing, write code to instantiate the class. 210 | 211 | Section 2: Flow Control 212 | 213 | - Develop code that implements an if or switch statement; and identify legal argument types for these statements. 214 | - Develop code that implements all forms of loops and iterators, including the use of for, the enhanced for loop (for-each), do, while, labels, break, and continue; and explain the values taken by loop counter variables during and after loop execution. 215 | - Develop code that makes use of assertions, and distinguish appropriate from inappropriate uses of assertions. 216 | - Develop code that makes use of exceptions and exception handling clauses (try, catch, finally), and declares methods and overriding methods that throw exceptions. 217 | - Recognize the effect of an exception arising at a specified point in a code fragment. Note that the exception may be a runtime exception, a checked exception, or an error. 218 | - Recognize situations that will result in any of the following being thrown: ArrayIndexOutOfBoundsException,ClassCastException, IllegalArgumentException, IllegalStateException, NullPointerException, NumberFormatException, AssertionError, ExceptionInInitializerError, StackOverflowError or NoClassDefFoundError. Understand which of these are thrown by the virtual machine and recognize situations in which others should be thrown programatically. 219 | 220 | Section 3: API Contents 221 | 222 | - Develop code that uses the primitive wrapper classes (such as Boolean, Character, Double, Integer, etc.), and/or autoboxing & unboxing. Discuss the differences between the String, StringBuilder, and StringBuffer classes. 223 | - Given a scenario involving navigating file systems, reading from files, writing to files, or interacting with the user, develop the correct solution using the following classes (sometimes in combination), from java.io: BufferedReader, BufferedWriter, File, FileReader, FileWriter, PrintWriter, and Console. 224 | - Use standard J2SE APIs in the java.text package to correctly format or parse dates, numbers, and currency values for a specific locale; and, given a scenario, determine the appropriate methods to use if you want to use the default locale or a specific locale. Describe the purpose and use of the java.util.Locale class. 225 | - Write code that uses standard J2SE APIs in the java.util and java.util.regex packages to format or parse strings or streams. For strings, write code that uses the Pattern and Matcher classes and the String.split method. Recognize and use regular expression patterns for matching (limited to: . (dot), * (star), + (plus), ?, \d, \s, \w, [], ()). The use of *, +, and ? will be limited to greedy quantifiers, and the parenthesis operator will only be used as a grouping mechanism, not for capturing content during matching. For streams, write code using the Formatter and Scanner classes and the PrintWriter.format/printf methods. Recognize and use formatting parameters (limited to: %b, %c, %d, %f, %s) in format strings. 226 | 227 | Section 4: Concurrency 228 | 229 | - Write code to define, instantiate, and start new threads using both java.lang.Thread and java.lang.Runnable. 230 | - Recognize the states in which a thread can exist, and identify ways in which a thread can transition from one state to another. 231 | - Given a scenario, write code that makes appropriate use of object locking to protect static or instance variables from concurrent access problems. 232 | 233 | Section 5: OO Concepts 234 | 235 | - Develop code that implements tight encapsulation, loose coupling, and high cohesion in classes, and describe the benefits. 236 | - Given a scenario, develop code that demonstrates the use of polymorphism. Further, determine when casting will be necessary and recognize compiler vs. runtime errors related to object reference casting. 237 | - Explain the effect of modifiers on inheritance with respect to constructors, instance or static variables, and instance or static methods. 238 | - Given a scenario, develop code that declares and/or invokes overridden or overloaded methods and code that declares and/or invokes superclass, or overloaded constructors. 239 | - Develop code that implements "is-a" and/or "has-a" relationships. 240 | 241 | Section 6: Collections / Generics 242 | - Given a design scenario, determine which collection classes and/or interfaces should be used to properly implement that design, including the use of the Comparable interface. 243 | - Distinguish between correct and incorrect overrides of corresponding hashCode and equals methods, and explain the difference between == and the equals method. 244 | - Write code that uses the generic versions of the Collections API, in particular, the Set, List, and Map interfaces and implementation classes. Recognize the limitations of the non-generic Collections API and how to refactor code to use the generic versions. Write code that uses the NavigableSet and NavigableMap interfaces. 245 | - Develop code that makes proper use of type parameters in class/interface declarations, instance variables, method arguments, and return types; and write generic methods or methods that make use of wildcard types and understand the similarities and differences between these two approaches. 246 | - Use capabilities in the java.util package to write code to manipulate a list by sorting, performing a binary search, or converting the list to an array. Use capabilities in the java.util package to write code to manipulate an array by sorting, performing a binary search, or converting the array to a list. Use the java.util.Comparator and java.lang.Comparable interfaces to affect the sorting of lists and arrays. Furthermore, recognize the effect of the "natural ordering" of primitive wrapper classes and java.lang.String on sorting. 247 | 248 | Section 7: Fundamentals 249 | 250 | - Given a code example and a scenario, write code that uses the appropriate access modifiers, package declarations, and import statements to interact with (through access or inheritance) the code in the example. 251 | - Given an example of a class and a command-line, determine the expected runtime behavior. 252 | - Determine the effect upon object references and primitive values when they are passed into methods that perform assignments or other modifying operations on the parameters. 253 | - Given a code example, recognize the point at which an object becomes eligible for garbage collection, determine what is and is not guaranteed by the garbage collection system, and recognize the behaviors of the Object.finalize() method. 254 | - Given the fully-qualified name of a class that is deployed inside and/or outside a JAR file, construct the appropriate directory structure for that class. Given a code example and a classpath, determine whether the classpath will allow the code to compile successfully. 255 | - Write code that correctly applies the appropriate operators including assignment operators (limited to: =, +=, -=), arithmetic operators (limited to: +, -, *, /, %, ++, --), relational operators (limited to: <, <=, >, >=, ==, !=), the instanceof operator, logical operators (limited to: &, |, ^, !, &&, ||), and the conditional operator ( ? : ), to produce a desired result. Write code that determines the equality of two objects or two primitives. 256 | 257 | ## Preparation Course For Java Certification 1 258 | 259 | Getting Started 260 | - Examine Java technology 261 | - Analyze a simple Java technology application 262 | - Execute a Java technology application 263 | 264 | Object-Oriented Programming 265 | - Define modeling concepts: abstraction, encapsulation, and packages 266 | - Discuss Java technology application code reuse 267 | - Define class, member, attribute, method, constructor, and package 268 | - Use the access modifiers private and public as appropriate for the guidelines of encapsulation Invoke a method on a particular object 269 | - Use the Java technology API online documentation 270 | 271 | Identifiers, Keywords, and Types 272 | - Use comments in a source program 273 | - Distinguish between valid and invalid identifiers 274 | - Use the eight primitive types 275 | - Define literal values for numeric and textual types 276 | - Define the terms primitive variable and reference variable 277 | - Declare variables of class type 278 | - Construct an object using new and describe default initialization 279 | - Describe the significance of a reference variable 280 | 281 | Expressions and Flow Control 282 | - Distinguish between instance and local variables 283 | - Describe how to initialize instance variables 284 | - Recognize, describe, and use Java software operators 285 | - Distinguish between legal and illegal assignments of primitive types 286 | - Identify boolean expressions and their requirements in control constructs 287 | - Recognize assignment compatibility and required casts in fundamental types 288 | - Use if, switch, for, while, and do constructions and the labeled forms of break and continue as flow control structures in a progra 289 | 290 | Arrays 291 | - Declare and create arrays of primitive, class, or array types Explain why elements of an array are initialized 292 | - Explain how to initialize the elements of an array Determine the number of elements in an array 293 | - Create a multidimensional array 294 | - Write code to copy array values from one array to another 295 | 296 | Class Design 297 | - Define inheritance, polymorphism, overloading, overriding, and virtual method invocation 298 | - Use the access modifiers protected and the default (package-friendly) 299 | - Describe the concepts of constructor and method overloading 300 | - Describe the complete object construction and initialization operation 301 | 302 | Advanced Class Features 303 | - Create static variables, methods, and initializers 304 | - Create final classes, methods, and variables Create and use enumerated types 305 | - Use the static import statement 306 | - Create abstract classes and methods Create and use an interface 307 | 308 | Exceptions and Assertions 309 | - Define exceptions 310 | - Use try, catch, and finally statements 311 | - Describe exception categories 312 | - Identify common exceptions 313 | - Develop programs to handle your own exceptions 314 | - Use assertions 315 | - Distinguish appropriate and inappropriate uses of assertions 316 | - Enable assertions at runtime 317 | 318 | Collections and Generics Framework 319 | - Describe the general purpose implementations of the core interfaces in the Collections framework 320 | - Examine the Map interface 321 | - Examine the legacy collection classes 322 | - Create natural and custom ordering by implementing the Comparable and Comparator interfaces 323 | - Use generic collections and type parameters in generic classes 324 | - Refactor existing non-generic code 325 | - Write a program to iterate over a collection 326 | - Examine the enhanced for loop 327 | 328 | I/O Fundamentals 329 | - Write a program that uses command-line arguments and system properties 330 | - Examine the Properties class 331 | - Construct node and processing streams, and use them appropriately 332 | - Serialize and deserialize objects 333 | - Distinguish readers and writers from streams, and select appropriately between them 334 | 335 | Console I/ O and File I/O 336 | - Read data from the console Write data to the console Describe files and file I/O 337 | 338 | Threads 339 | - Define a thread 340 | - Create separate threads in a Java technology program, controlling the code and data that are used by that thread 341 | - Control the execution of a thread and write platform-independent code with threads 342 | - Describe the difficulties that might arise when multiple threads share data 343 | - Use wait and notify to communicate between threads 344 | - Use synchronized to protect data from corruption 345 | 346 | ## Preparation Course For Java Certification 2 347 | 348 | Explaining Java Technology 349 | 350 | - Describe key concepts of the Java programming language 351 | - List the three Java technology product groups 352 | - Summarize each of the seven stages of the product life cycle 353 | 354 | Analyzing a Problem and Designing a Solution 355 | 356 | - Analyze a problem using object-oriented analysis 357 | - Design classes from which objects will be created 358 | 359 | Developing and Testing a Java Technology Program 360 | 361 | - Identify the four components of a class in the Java programming language 362 | - Use the main method in a test class to run a Java technology program from the command line 363 | - Compile and execute a Java technology program 364 | 365 | Declaring, Initializing, and Using Variables 366 | 367 | - Identify the use the syntax for variables and define the syntax for a variable 368 | - List the eight Java programming language primitive data types 369 | - Declare, initialize, and use variables and constants according to Java programming language guidelines and coding standards 370 | - Modify variable values using operators 371 | - Use promotion and type casting 372 | 373 | Creating and Using Objects 374 | 375 | - Declare, instantiate, and initialize object reference variables 376 | - Compare how object reference variables are stored in relation to primitive variables 377 | - Use a class (the String class) included in the Java Software Developer Kit (SDK) 378 | - Use the Java 2 Platform, Standard Edition (J2SE) class library specification to learn about other classes in this application programming interface (API) 379 | 380 | Using Operators and Decision Constructs 381 | 382 | - Identify relational and conditional operators 383 | - Create if and if/else constructs 384 | - Use the switch construct 385 | 386 | Using Loop Constructs 387 | 388 | - Create while loops 389 | - Develop for loops 390 | - Create do/while loops 391 | 392 | Developing and Using Methods 393 | 394 | - Describe the advantages of methods and define worker and calling methods 395 | - Declare and invoke a method 396 | - Compare object and static methods 397 | - Use overloaded methods 398 | 399 | Implementing Encapsulation and Constructors 400 | 401 | - Use encapsulation to protect data 402 | - Create constructors to initialize objects 403 | 404 | Creating and Using Arrays 405 | 406 | - Code one-dimensional arrays 407 | - Set array values using length attribute and a loop 408 | - Pass arguments to the main method for use in a program 409 | - Create two-dimensional arrays 410 | 411 | Implementing Inheritance 412 | 413 | - Define and test your use of inheritance 414 | - Explain abstraction 415 | - Explicitly identify class libraries used in your code 416 | 417 | ## Oracle Certified Associate or Java SE 8 Programmer I : 1Z0-808 418 | 419 | Java Basics 420 | - Define the scope of variables 421 | - Define the structure of a Java class 422 | - Create executable Java applications with a main method; run a Java program from the command line; including console output. 423 | - Import other Java packages to make them accessible in your code 424 | - Compare and contrast the features and components of Java such as: platform independence, object orientation, encapsulation, etc. 425 | 426 | Working With Java Data Types 427 | - Declare and initialize variables (including casting of primitive data types) 428 | - Differentiate between object reference variables and primitive variables 429 | - Know how to read or write to object fields 430 | - Explain an Object's Lifecycle (creation, "dereference by reassignment" and garbage collection) 431 | - Develop code that uses wrapper classes such as Boolean, Double, and Integer. 432 | 433 | Using Operators and Decision Constructs 434 | - Use Java operators; including parentheses to override operator precedence 435 | - Test equality between Strings and other objects using == and equals () 436 | - Create if and if/else and ternary constructs 437 | - Use a switch statement 438 | 439 | Creating and Using Arrays 440 | - Declare, instantiate, initialize and use a one-dimensional array 441 | - Declare, instantiate, initialize and use multi-dimensional array 442 | 443 | Using Loop Constructs 444 | - Create and use while loops 445 | - Create and use for loops including the enhanced for loop 446 | - Create and use do/while loops 447 | - Compare loop constructs 448 | - Use break and continue 449 | 450 | Working with Methods and Encapsulation 451 | - Create methods with arguments and return values; including overloaded methods 452 | - Apply the static keyword to methods and fields 453 | - Create and overload constructors; including impact on default constructors 454 | - Apply access modifiers 455 | - Apply encapsulation principles to a class 456 | - Determine the effect upon object references and primitive values when they are passed into methods that change the values 457 | 458 | Working with Inheritance 459 | - Describe inheritance and its benefits 460 | - Develop code that demonstrates the use of polymorphism; including overriding and object type versus reference type 461 | - Determine when casting is necessary 462 | - Use super and this to access objects and constructors 463 | - Use abstract classes and interfaces 464 | 465 | Handling Exceptions 466 | - Differentiate among checked exceptions, unchecked exceptions, and Errors 467 | - Create a try-catch block and determine how exceptions alter normal program flow 468 | - Describe the advantages of Exception handling 469 | - Create and invoke a method that throws an exception 470 | - "Recognize common exception classes (such as NullPointerException, ArithmeticExcpetion, ArrayIndexOutOfBoundsException, ClassCastException)" 471 | 472 | Working with Selected classes from the Java API 473 | - Manipulate data using the StringBuilder class and its methods 474 | - Creating and manipulating Strings 475 | - Create and manipulate calendar data using classes from java.time.LocalDateTime, java.time.LocalDate, java.time.LocalTime, java.time.format.DateTimeFormatter, java.time.Period 476 | - Declare and use an ArrayList of a given type 477 | - Write a simple Lambda expression that consumes a Lambda Predicate expression 478 | 479 | 480 | ## Oracle Certified Professional or Java SE 8 Programmer II - 1Z0-809 481 | 482 | Java Class Design 483 | - Implement encapsulation 484 | - Implement inheritance including visibility modifiers and composition 485 | - Implement polymorphism 486 | - Override hashCode, equals, and toString methods from Object class 487 | - Create and use singleton classes and immutable classes 488 | - Develop code that uses static keyword on initialize blocks, variables, methods, and classes 489 | 490 | Advanced Java Class Design 491 | - Develop code that uses abstract classes and methods 492 | - Develop code that uses final keyword 493 | - Create inner classes including static inner class, local class, nested class, and anonymous inner class 494 | - Use enumerated types including methods, and constructors in an enum type 495 | - Develop code that declares, implements and/or extends interfaces and use the atOverride annotation. 496 | - Create and use Lambda expressions 497 | 498 | Generics and Collections 499 | - Create and use a generic class 500 | - Create and use ArrayList, TreeSet, TreeMap, and ArrayDeque objects 501 | - Use java.util.Comparator and java.lang.Comparable interfaces 502 | - Collections Streams and Filters 503 | - Iterate using forEach methods of Streams and List 504 | - Describe Stream interface and Stream pipeline 505 | - Filter a collection by using lambda expressions 506 | - Use method references with Streams 507 | 508 | Lambda Built-in Functional Interfaces 509 | - Use the built-in interfaces included in the java.util.function package such as Predicate, Consumer, Function, and Supplier 510 | - Develop code that uses primitive versions of functional interfaces 511 | - Develop code that uses binary versions of functional interfaces 512 | - Develop code that uses the UnaryOperator interface 513 | 514 | Java Stream API 515 | - Develop code to extract data from an object using peek() and map() methods including primitive versions of the map() method 516 | - Search for data by using search methods of the Stream classes including findFirst, findAny, anyMatch, allMatch, noneMatch 517 | - Develop code that uses the Optional class 518 | - Develop code that uses Stream data methods and calculation methods 519 | - Sort a collection using Stream API 520 | - Save results to a collection using the collect method and group/partition data using the Collectors class 521 | - Use flatMap() methods in the Stream API 522 | 523 | Exceptions and Assertions 524 | - Use try-catch and throw statements 525 | - Use catch, multi-catch, and finally clauses 526 | - Use Autoclose resources with a try-with-resources statement 527 | - Create custom exceptions and Auto-closeable resources 528 | - Test invariants by using assertions 529 | 530 | Use Java SE 8 Date/Time API 531 | - Create and manage date-based and time-based events including a combination of date and time into a single object using LocalDate, LocalTime, LocalDateTime, Instant, Period, and Duration 532 | - Work with dates and times across timezones and manage changes resulting from daylight savings including Format date and times values 533 | - Define and create and manage date-based and time-based events using Instant, Period, Duration, and TemporalUnit 534 | 535 | Java I/O Fundamentals 536 | - Read and write data from the console 537 | - Use BufferedReader, BufferedWriter, File, FileReader, FileWriter, FileInputStream, FileOutputStream, ObjectOutputStream, ObjectInputStream, and PrintWriter in the java.iopackage. 538 | 539 | Java File I/O (NIO.2) 540 | - Use Path interface to operate on file and directory paths 541 | - Use Files class to check, read, delete, copy, move, manage metadata of a file or directory 542 | - Use Stream API with NIO.2 543 | 544 | Java Concurrency 545 | - Create worker threads using Runnable, Callable and use an ExecutorService to concurrently execute tasks 546 | - Identify potential threading problems among deadlock, starvation, livelock, and race conditions 547 | - Use synchronized keyword and java.util.concurrent.atomic package to control the order of thread execution 548 | - Use java.util.concurrent collections and classes including CyclicBarrier and CopyOnWriteArrayList 549 | - Use parallel Fork/Join Framework 550 | - Use parallel Streams including reduction, decomposition, merging processes, pipelines and performance. 551 | 552 | Building Database Applications with JDBC 553 | - Describe the interfaces that make up the core of the JDBC API including the Driver, Connection, Statement, and ResultSet interfaces and their relationship to provider implementations 554 | - Identify the components required to connect to a database using the DriverManager class including the JDBC URL 555 | - Submit queries and read results from the database including creating statements, returning result sets, iterating through the results, and properly closing result sets, statements, and connections 556 | 557 | Localization 558 | - Read and set the locale by using the Locale object 559 | - Create and read a Properties file 560 | - Build a resource bundle for each locale and load a resource bundle in an application --------------------------------------------------------------------------------