Intro to Java Week 7 Tuesday, December 9, 14 Homeworks 5 6 - - PowerPoint PPT Presentation

intro to java week 7
SMART_READER_LITE
LIVE PREVIEW

Intro to Java Week 7 Tuesday, December 9, 14 Homeworks 5 6 - - PowerPoint PPT Presentation

Intro to Java Week 7 Tuesday, December 9, 14 Homeworks 5 6 Tuesday, December 9, 14 JUnit Hugely popular unit test framework Simple, easy to use Eclipse integration Right click on source file, click on JUnit Test Case next,


slide-1
SLIDE 1

Intro to Java Week 7

Tuesday, December 9, 14

slide-2
SLIDE 2

Homeworks

5 6

Tuesday, December 9, 14

slide-3
SLIDE 3

JUnit

Hugely popular unit test framework Simple, easy to use Eclipse integration Right click on source file, click on “JUnit Test Case” “next”, select methods you want to test, “finish” may ask to put JUnit on build path, do so replace the “fail” calls with your test Right click on JUnit file, “run as JUnit test” Junit window will show the status of your tests

Tuesday, December 9, 14

slide-4
SLIDE 4

Singleton

Used to be “instantiate and set a static variable if it was null” class Foo { private Single single; Single getSingle() if(single == null) single = new Single; return single;} Proper way now is to use an Enum enum Single ...

Tuesday, December 9, 14

slide-5
SLIDE 5

MVC(Model View Controller)

Important design pattern

Tuesday, December 9, 14

slide-6
SLIDE 6

Weka

Machine Learning package written in Java Very easy to use, well documented. Excellent associated book Can use interactive app to explore techniques, then program against API

Tuesday, December 9, 14

slide-7
SLIDE 7

Computing on Clusters

Some jobs too big for single machines Difficult to parallelize across multiple machine How to divy up and recombine the work? How to start, stop, coordinate different machines? Servers used to be big, expensive, highly reliable Servers now are cheap and expected to fail Facebook OpenHardware How to deal with machine failures?

Tuesday, December 9, 14

slide-8
SLIDE 8

MPI(Message Passing Interface)

Complex, low level, do-it-yourself Somewhat like Actors Popular in science and engineering

Tuesday, December 9, 14

slide-9
SLIDE 9

Centralized Storage Network

Servers connect to a centralized storage system over a network Network can saturate

Tuesday, December 9, 14

slide-10
SLIDE 10

Hadoop

Focuses on streaming data, instead of random access Disk seeks are much slower than disk transfers Relational data often normalized web logs not normalized

Tuesday, December 9, 14

slide-11
SLIDE 11

HDFS

Write-once, read-many Data redundancy, to compensate for failures, and place data near CPUs, ideally disk on CPU, or in same rack HDFS, by default, saves three copies of data Newer file systems (Reed-Solomon Erasure Codes) save 1.5X copies High latency, high thruput Likes big files - size multiples of 64M Lots of small files not optimal, keeps file map in memory

Tuesday, December 9, 14

slide-12
SLIDE 12

Hadoop - Pig

Scriptable Interpreter PigPen - Eclipse plugin Not SQL - more “imperative”

Tuesday, December 9, 14

slide-13
SLIDE 13

Hadoop - Hive

Interpreter Scriptble SQL dialect Developed by Facebook

Tuesday, December 9, 14

slide-14
SLIDE 14

Hadoop - HBase

Simple table model that can be written and read in real time Good match for web crawlers

Tuesday, December 9, 14

slide-15
SLIDE 15

Hadoop - Zookeeper

Coordinates cluster of machines Handles failures, new leader election Used by Haddop, but generally useful

Tuesday, December 9, 14

slide-16
SLIDE 16

Hadoop is Great, but...

Long latency - people want real time Lots of disk IO Machines turning up with large memory AWS has 350gig main memory instances Hadoop poor fit for tasks like machine learning that want to run in memory for a long time

Tuesday, December 9, 14

slide-17
SLIDE 17

Spark

Written in Scala Supports apps in Scala, Python, and Java Graph processing, SQL Orx - real time machine learning

Tuesday, December 9, 14

slide-18
SLIDE 18

Scala - Java++ ?

Multi-Paradigm, primarily functional and object

  • riented

Huge language Runs on JVM Interoperates with Java Can use all Java APIs Currently small market share compared to Java, but turns up in interesting places Twitter and some other startups Academia If you know Java, you’re 3/ 4 to Scala

Tuesday, December 9, 14

slide-19
SLIDE 19

Scala Features

scriptable type inference EVERYTHING is an object - no primitives like Java 234.toString() Garbage Collection All statements return a value(sometimes Unit(void)) Mutable and Immutable versions of everything traits are very similar to java 1.8 interfaces

Tuesday, December 9, 14

slide-20
SLIDE 20

Scala Features

no “statics” - use singleton Concurrency Futures(like Java) Actor Framework(AKKA) - like BikeCo Pattern Matching

Tuesday, December 9, 14

slide-21
SLIDE 21

J2EE

Multi-tier framework for web/ enterprise applications APIs for each tier Annotations have mostly replace XML for configuration I know Chase uses it...

Tuesday, December 9, 14

slide-22
SLIDE 22

Tuesday, December 9, 14

slide-23
SLIDE 23

J2EE EJBs

Beans live in a EJB container, which manages them and provides a variety of services. Beans are recycled by the container Session beans Stateful - maintain state across calls shopping cart Stateless - just do computation, send JMS messages Singleton Message beans Consume messages from JMS

Tuesday, December 9, 14

slide-24
SLIDE 24

J2EE Tier Functionality

Web servlets, websockets, web page generation Web Services soap, rest Enterprise concurrency, annotations, Beans, JCA, dependency injection, object persistence, message service, enterprise java beans, transactions, email Other management, connector architecture, security, batch, JSON support

Tuesday, December 9, 14

slide-25
SLIDE 25

J2EE - Enterprise Java Beans

Beans live in a EJB container Beans are resource managed and recycled by the container Container provides many services to the beans, so bean developer can focus on business logic and not worry about infrastructure issues Transactions Concurrency Persistence Timers

Tuesday, December 9, 14

slide-26
SLIDE 26

J2EE - Context and Dependency Injection

Why do CDI? @Inject annotation can be placed on a field, method

  • r constructor

Sometimes referred as “inversion of control” @Stateless public class DeliveryService { @Inject Truck truck;

  • r

@Inject setTruck(Truck truck) { this.truck = truck;}

  • r

@Inject DeliveryService(Truck truck) { this.truck = truck; }

Tuesday, December 9, 14

slide-27
SLIDE 27

J2EE - Bean Constraints

Set of annotations that restrict values bean fields can hold @min(10) - field cannot be smaller than 10 @size(5, 10) - a collection must have size btw 5 & 10 @Past - date must be in the past @Future - date must be in the future Can define custom constraints

Tuesday, December 9, 14

slide-28
SLIDE 28

J2EE - Transactions

Container manages transactions, aborts, rollbacks Different types of transactions supported: REQUIRED - must run inside a transaction. start a new one if needed REQUIRED_NEW - start a new transaction, even if

  • ne already exists

NEVER - must run outside a transaction @Transactional(TxType.REQUIRES_NEW) Can annotate method or class

Tuesday, December 9, 14

slide-29
SLIDE 29

J2EE - Persistence

Can persist a POJO by just adding a few annotations Use entityManager to create “managed POJOs”, save changes Change MPOJO fields as desired, then flush entityManager, and all changes are written to DB @Entity public class Student implements Serializable { / / the primary key @Id int id; String first, last, uni; Picture picture; Transcript transcript; }

Tuesday, December 9, 14

slide-30
SLIDE 30

J2EE - Eager/Lazy Loading

Can define “load groups”. for example first, last, uni can be eager - loaded in the query response picture and transcript can be in separate lazy groups - only loaded when the reference is touched

Tuesday, December 9, 14

slide-31
SLIDE 31

J2EE - Security

Enforces various kinds of security, based on the “role” of the user - admin, customer, etc

Tuesday, December 9, 14

slide-32
SLIDE 32

J2EE - Implementations

Various vendors implement the spec Compete on performance and extra features Using extra features can lead to vendor lockin

Tuesday, December 9, 14

slide-33
SLIDE 33

Spring

Also focused on “enterprise computing” Very nice use of annotations for configuration Even larger scope than J2EE Seems good ideas appear in Spring first, then turn up in J2EE 2 years later High level interface to servlets Modular - see Spring Modules Fantastic support - why so good?

Tuesday, December 9, 14

slide-34
SLIDE 34

Spring - Aspect Oriented Programming

Address “cross-cutting” issues without duplicating lots

  • f code

profiling, logging, etc Identify multiple method by pattern matching Install “advice” on each method. Four types Before After Around After Throwing

Tuesday, December 9, 14

slide-35
SLIDE 35

Another “Container” - Docker

Docker provides “services” to docker jobs, which run in a “sandboxed” linux process Avoids the overhead of virtual machines

Tuesday, December 9, 14

slide-36
SLIDE 36

Android

Uses Dalvik VM, not a JVM Dalvik supposed to better with limited resources Java version roughly comparable to JDK 6 Subset of SE libraries Development systems based on Eclipse and Intellj For development, recommend using an Android device instead of the emulator Easy to setup

Tuesday, December 9, 14

slide-37
SLIDE 37

Large Frameworks

Downside Usually steep learning curve, really helps to have a friendly guru around, or a support contract. Configuration can be difficult Upside Can do amazing things with limited resources

Tuesday, December 9, 14

slide-38
SLIDE 38

In Conclusion

Java is a BIG language Mostly clean and well designed Illustrates many important concepts Very influential Huge mindshare in the “real world” Lots of things we didn’ t cover, but we hit the major points

Tuesday, December 9, 14

slide-39
SLIDE 39

That’ s all, folks

Thanks

Tuesday, December 9, 14