CS108

2/12/2015

Concepts: Java Servlets

  • Use New Dynamic Web Project
  • Create new servlets to
  • Listener is designed to do setup (i.e. initializing the sessions)
  • Session attributes act like hashMaps
  • You can creat

2/3/2015

Concepts: Threading

  • start vs. run:
    • start will actually fork off a new quesiton but run will keep the run method of the child thread running on the main thread itself
  • *

1/29/2015

Concepts: Databases

  • We'll be using MySQL Monitor to interact directly with MySQL
  • Key characteristics of a database:

    • Persistent Storage
    • Application Access (applications can acces the data)
    • Transaction management (this is not supported by a file system): Database rolls back if either end of the transaction fails
    • Efficient Searching (not necessarily supported by traditional file system)
  • To access the database you need:

    1. username
    2. password
    3. database server
    4. database name
  • Java Database Connectivity (JDBC): built-in java library that works with SQL database.

1/27/2015

Concepts: Anonymous Functions, Lambda Functions

  • You can sort with an anonymous lamda function, you don't need to create the entire comparable class - just need to create that one function:
Collections.sort(ingredients, (x, y) -> (return(x.getGrams()-y.getGrams()));  

Note that this anonymous function has the same context as the surrounding program in JRE 8 (JRE 9 apparently has the concept of closure)

1/22/2015

Concepts: Java Swing

  • java.awt abstract window types
JFrame theFrame = new JFrame("Swing Example");  
theFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

(this way the entire application is still running even when you close a window)

  • You can set the "look and feel" of an application
  • Use ActionListeners to catch changes to buttons (like a JS callback)

1/8/2015

Concepts: Autoboxing, Templating, Generic Types, JUnit

  • Remember you can't create collections of primitive types in Java, (i.e. you have to use Integer objects instead of ints)
  • Autoboxing: We can autobox wrapper objects like Integers: myIntList.add(5) is equivalent to myIntList.add(new Integer(5))
  • Autounboxing: int x = myIntList.get(0) Though this list is made of Integer objects, Java will auto-unbox the int value for you
    • You do need to be explicit to unbox in this case: a.get(0).intValue() == b.get(0).intValue()

Generic Types

  • You can use generic type parameters to template objects in Java:
public class Pair<T> {  
    private T a;
    private T b;
}
...
Pair<Integer> iPair = new Pair<Integer>(1,2);  
  • Beware! You cannot instantiate new generic types inside a class that uses a type parameter. This is because Java doesn't know what type it is at run-time (due to backwards-compability in the internal implementation of types because only the compiler knows about the type)

JUnit Testing Frameworks

  • test stub - sample item returned that can be used to test a program (i.e. a single word returned by the hangman initialization function)
  • test harnesses - stands in as a potential user of the program you're writing