Getting Started With Feature Toggle in Java
|
|
- Constance Hart
- 5 years ago
- Views:
Transcription
1 Guide Getting Started With Feature Toggle in Java
2 INTRO Feature toggles (also known as feature flags) are simple. You want to introduce new behavior in a Java application, but you re not ready to turn it on right away, or you only want to make it available for a subset of users. Maybe another application needs to be ready for the new feature; perhaps the business isn t prepared to support it yet. So you add a feature toggle to your configuration file or the command line, default it to off, and move on. I don t blame you if you think there s something more to it. Sometimes changing configuration is as difficult as pushing new code, and slapping booleans into your code feels superficial. You re right. There is more. There s feature flag management. Instead of using conditionals that will inevitably turn into technical debt, you can include feature flags as part of a strategy for improving your code and your ability to support it. This post will tackle feature flag management in Java. We ll start with a simple flag to control a new feature, and then we ll integrate it into Rollout s secure feature management system. 2
3 BASIC FEATURE TOGGLES FOR JAVA For this tutorial, I m using a small application called SimpleXKCDClient. You can grab a local copy from here. It uses OkHttp to download JSON information about XKCD comics from the XKCD REST service. As the name implies, it s simple and gives us a way to focus on feature toggles. We ll use JUnit tests to illustrate how the toggles change the application behavior. Here s a Java representation of an XKCD comic: public class XKCDComic { private String month; private int num; private String year; private String news; private String safe_title; private String transcript; private String alt; private String img; private String title; private String day; private String link; Initially, the client retrieves my favorite comic from XKCD: private String REST_URI = " public XKCDComic getcomic() { Request request = new Request.Builder().url(REST_URI).build(); try (Response response = httpclient.newcall(request).execute()) { ObjectMapper mapper = new ObjectMapper(); return mapper.readvalue(response.body().bytes(), XKCDComic.class); catch(ioexception ioe) { return null; We can verify that we retrieved the correct comic with this unit public void givenrequest_comicisdutycalls() { XKCDComic XKCDComic = simplexkcdclient.getcomic(); assertequals("duty Calls", XKCDComic.getTitle()); 3
4 So let s add a new feature. We want to load a different comic during the holidays. boolean holidayseason = true; public XKCDComic getcomic() { if (holidayseason) { REST_URI = " Request request = new Request.Builder().url(REST_URI).build(); try (Response response = httpclient.newcall(request).execute()) { ObjectMapper mapper = new ObjectMapper(); return mapper.readvalue(response.body().bytes(), XKCDComic.class); catch(ioexception ioe) { return null; Then we ll add a new test that checks for a different public void givenholidays_comicsisxmasspecial() { XKCDComic XKCDComic = simplexkcdclient.getcomic(); assertequals("2008 Christmas Special", XKCDComic.getTitle()); We ve added our first feature flag. If holidayseason is true, we retrieve a different comic. 4
5 FEATURE FLAG MANAGEMENT - AN INTRODUCTION Of course, to activate the different behavior, we have to change the code, build, and deploy. That s not a feature flag. We want to turn features on and off without touching any code. Before fully delving into the management features that Rollout gives us, let s make another small but still significant change to SimpleXKCDClient. Getting the Configuration Out of Code Getting the feature toggle out of code is the first step in managing it. Opening code and changing it is not only unmaintainable; it s not toggling features. It s deploying new releases. Let s create a configuration file: holidayseason=false We ll call it application.properties. Then let s override the default constructor to load the configuration file: public SimpleXKCDClient() throws Exception { InputStream props = new FileInputStream( src/test/resources/application. properties ); System.getProperties().load(props); holidayseason = Boolean.parseBoolean(Optional.of(System. getproperty( holidayseason )).orelse( false )); Now we can edit the properties file to set holidayseason to true or false and watch the results of our tests change. 5
6 MANAGING FEATURE FLAGS CENTRALLY We ve done a limited version of feature flag management that requires distributing and modifying configuration files to toggle features Let s look at a better way. Getting Started With Rollout First, you ll need to create a free Rollout account. Sign in with your account and create a new app: Be sure to select Java and Java Server, as shown. Next, you ll see instructions for adding Rollout to your application: 6
7 Add the Rollout library to your dependencies. At the time of this writing, the current version of the library is Here s my Gradle.build: dependencies { compile group: com.squareup.okhttp3, name: okhttp, version: compile group: io.rollout.rox, name: rox-java-server, version: compile group: com.fasterxml.jackson.core, name: jackson-databind, version: compileonly group: org.projectlombok, name: lombok, version: testcompile group: junit, name: junit, version: 4.12 Next, add the call to Rox.setup() to initialize the SDK, using your application key. SimpleXKCDClient() throws Exception { // Initialize ROllout Rox.setup( replace with your application key ); Back on the Rollout website, click Next for the prompt to build and run your application. Build and run it, and you re rewarded after a few moments. 7
8 IMPLEMENTING A FEATURE FLAG Now, let s turn holidayseason into a managed feature flag. Managed flags are RoxFlags: public class Flags implements RoxContainer { public RoxFlag holidayseason = new RoxFlag(); They re public members of a RoxContainer. In this example, holidayseason is created with its default value disabled. RoxFlag will also accept a boolean value as an argument to its constructor as a default value. Next, we can modify our constructor to create the container and register it. SimpleXKCDClient() throws Exception { // Create Rollout container flags = new Flags(); // Register container with Rollout Rox.register("Flags", flags); // Initialize Rollout Rox.setup("your app key"); Run the application again, and then look for your feature toggle in the Rollout dashboard: It s there! In our application, we re downloading a document via REST and exiting. Since the feature toggle determines which document we request, we want to update the value of our flag from Rollout before we make the REST request. Rollout s API is asynchronous, so we need to do a little bit of extra work to ensure that we have the correct flag setting before the REST request is initiated. Rollout has more information on how flags are updated here. 8
9 We can install a configuration fetched handler that Rollout will call after the configuration is received. By using this callback to set a CountdownLatch, we can block until we re ready. Let s move the Rollout initialization to a private method and install the callback. Then we ll call this new method from our constructor: private void initializerox() { CountDownLatch roxfirstfetch = new CountDownLatch(1); try { flags = new Flags(); Rox.register("Flags", flags); RoxOptions options = new RoxOptions.Builder().withConfigurationFetchedHandler( new ConfigurationFetchedHandler() public void onconfigurationfetched(fetcherresults arg0) { if (roxfirstfetch.getcount() > 0) { roxfirstfetch.countdown(); System.err.println("Got Rollout configuration"); ).build(); Rox.setup("your key", options); roxfirstfetch.await(10, TimeUnit.SECONDS); catch (InterruptedException ie) { System.err.println("Interrupted waiting for rollout data."); We re ready to start setting our flag from the management console. 9
10 MANAGING A FEATURE FLAG We manage flags by adding them to experiments. An experiment is a scheme for controlling flags (and other variables) in production. Click on Production in the left-hand side menu, and then click Experiments. This will bring up a screen with a Create Experiment button. Click that, and then fill the new experiment window out appropriately. Select Set Audience. And we see a console for setting flags to true, false, or split. If we run our tests now, we see that holidayseason is false. Let s change it to true. 10
11 When we run our tests again, the results are reversed! We can change the behavior of our application without touching code or configuration files. Before we wrap up, let s take a look at the experiment on the console again. Flip the flag from true to split. We don t just have the ability to change the application behavior from the console; we can also experiment (hence the name) with how often the application loads the different comic. This is the power of feature flags 11
12 THIS IS JUST THE BEGINNING This guide is intended to show you how to get started with Rollout in a Java project. Rollout s documentation has details on how you can do a great deal more with flags, experiments, groupings, and the management console. You now have an understanding of feature flag management and how it can improve your Java code and help you manage your projects. Get to it! 12
13 Rollout is an advanced feature management solution that gives engineering and product teams feature control, post-deployment. It s the most effective way to roll out new features to the right audience while protecting customers from failure and improving KPI s. For more information: visit us at support@rollout.io 13
Getting Started With Android Feature Flags
Guide Getting Started With Android Feature Flags INTRO When it comes to getting started with feature flags (Android feature flags or just in general), you have to understand that there are degrees of feature
More informationGetting Started With NodeJS Feature Flags
Guide Getting Started With NodeJS Feature Flags INTRO We ve all done it at some point: thrown a conditional around a piece of code to enable or disable it. When it comes to feature flags, this is about
More informationCS61B, Spring 2003 Discussion #17 Amir Kamil UC Berkeley 5/12/03
CS61B, Spring 2003 Discussion #17 Amir Kamil UC Berkeley 5/12/03 Topics: Threading, Synchronization 1 Threading Suppose we want to create an automated program that hacks into a server. Many encryption
More informationChecked and Unchecked Exceptions in Java
Checked and Unchecked Exceptions in Java Introduction In this article from my free Java 8 course, I will introduce you to Checked and Unchecked Exceptions in Java. Handling exceptions is the process by
More informationWriting your own Exceptions. How to extend Exception
Writing your own Exceptions How to extend Exception When would you write your own exception class? When to write your own custom exception is a matter for discussion in your project design team. There
More informationCS201 - Assignment 3, Part 1 Due: Friday February 28, at the beginning of class
CS201 - Assignment 3, Part 1 Due: Friday February 28, at the beginning of class One of the keys to writing good code is testing your code. This assignment is going to introduce you and get you setup to
More informationArrays. COMS W1007 Introduction to Computer Science. Christopher Conway 10 June 2003
Arrays COMS W1007 Introduction to Computer Science Christopher Conway 10 June 2003 Arrays An array is a list of values. In Java, the components of an array can be of any type, basic or object. An array
More informationBasic Keywords Practice Session
Basic Keywords Practice Session Introduction In this article from my free Java 8 course, we will apply what we learned in my Java 8 Course Introduction to our first real Java program. If you haven t yet,
More informationDo JSON. Jackson. with. By Baeldung
Do JSON with Jackson By Baeldung { Do JSON with Jackson TABLE OF CONTENTS 1: A GUIDE TO JACKSON ANNOTATIONS 2: JACKSON IGNORE PROPERTIES ON MARSHALLING 3: IGNORE NULL FIELDS WITH JACKSON 4: JACKSON CHANGE
More informationCOMP 213. Advanced Object-oriented Programming. Lecture 19. Input/Output
COMP 213 Advanced Object-oriented Programming Lecture 19 Input/Output Input and Output A program that read no input and produced no output would be a very uninteresting and useless thing. Forms of input/output
More informationDealing with Bugs. Kenneth M. Anderson University of Colorado, Boulder CSCI 5828 Lecture 27 04/21/2009
Dealing with Bugs Kenneth M. Anderson University of Colorado, Boulder CSCI 5828 Lecture 27 04/21/2009 University of Colorado, 2009 1 Goals 2 Review material from Chapter 11 of Pilone & Miles Dealing with
More informationAssertions, pre/postconditions
Programming as a contract Assertions, pre/postconditions Assertions: Section 4.2 in Savitch (p. 239) Specifying what each method does q Specify it in a comment before method's header Precondition q What
More informationLecture 5: Implementing Lists, Version 1
CS18 Integrated Introduction to Computer Science Fisler, Nelson Lecture 5: Implementing Lists, Version 1 Contents 1 Implementing Lists 1 2 Methods 2 2.1 isempty...........................................
More informationLab 2: File Input and Output
Lab 2: File Input and Output This lab introduces how to handle files as both input and output. We re coming back to Tracery (which you implemented in Lab 1) with this assignment but instead of always reading
More informationLecture 11: Recursion (hard)
Lecture 11: Recursion (hard) Recap/finish: stutter an integer 348 > 334488 We added the base case So how do we deal with larger numbers how can we split them up? We need to split into smaller chunks Since
More informationExceptions. Examples of code which shows the syntax and all that
Exceptions Examples of code which shows the syntax and all that When a method might cause a checked exception So the main difference between checked and unchecked exceptions was that the compiler forces
More informationException Handling. Sometimes when the computer tries to execute a statement something goes wrong:
Exception Handling Run-time errors The exception concept Throwing exceptions Handling exceptions Declaring exceptions Creating your own exception Ariel Shamir 1 Run-time Errors Sometimes when the computer
More informationCS159. Nathan Sprague. September 30, 2015
CS159 Nathan Sprague September 30, 2015 Testing Happens at Multiple Levels Unit Testing - Test individual classes in isolation. Focus is on making sure that each method works according to specification.
More informationPRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 03. REQUIREMENTS CHANGE. I Love You, You re Perfect... Now Change!
PRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 03. REQUIREMENTS CHANGE I Love You, You re Perfect... Now Change! You re a hero! The door you built for Todd and Gina was a huge success, and now Doug
More informationException Handling. Run-time Errors. Methods Failure. Sometimes when the computer tries to execute a statement something goes wrong:
Exception Handling Run-time errors The exception concept Throwing exceptions Handling exceptions Declaring exceptions Creating your own exception 22 November 2007 Ariel Shamir 1 Run-time Errors Sometimes
More information엄현상 (Eom, Hyeonsang) School of Computer Science and Engineering Seoul National University COPYRIGHTS 2017 EOM, HYEONSANG ALL RIGHTS RESERVED
엄현상 (Eom, Hyeonsang) School of Computer Science and Engineering Seoul National University COPYRIGHTS 2017 EOM, HYEONSANG ALL RIGHTS RESERVED Outline - Interfaces - An Instrument interface - Multiple Inheritance
More informationIntroduction to Programming Using Java (98-388)
Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;
More informationExceptions. What exceptional things might our programs run in to?
Exceptions What exceptional things might our programs run in to? Exceptions do occur Whenever we deal with programs, we deal with computers and users. Whenever we deal with computers, we know things don
More informationVideo 2.1. Arvind Bhusnurmath. Property of Penn Engineering, Arvind Bhusnurmath. SD1x-2 1
Video 2.1 Arvind Bhusnurmath SD1x-2 1 Topics Why is testing important? Different types of testing Unit testing SD1x-2 2 Software testing Integral part of development. If you ship a software with bugs,
More informationTirgul 1. Course Guidelines. Packages. Special requests. Inner classes. Inner classes - Example & Syntax
Tirgul 1 Today s topics: Course s details and guidelines. Java reminders and additions: Packages Inner classes Command Line rguments Primitive and Reference Data Types Guidelines and overview of exercise
More informationBinghamton University. CS-140 Fall Problem Solving. Creating a class from scratch
Problem Solving Creating a class from scratch 1 Recipe for Writing a Class 1. Write the class boilerplate stuff 2. Declare Fields 3. Write Creator(s) 4. Write accessor methods 5. Write mutator methods
More informationPRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 10. PUTTING IT ALL TOGETHER. Are we there yet?
PRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 10. PUTTING IT ALL TOGETHER Are we there yet? Developing software, OOA&D style You ve got a lot of new tools, techniques, and ideas about how to develop
More informationDesigning Robust Classes
Designing Robust Classes Learning Goals You must be able to:! specify a robust data abstraction! implement a robust class! design robust software! use Java exceptions Specifications and Implementations
More informationAPCS:: Basketball Statistics Program Activity
APCS:: Basketball Statistics Program Activity This assignment is LARGE. It will involve some very serious programming, but in the end you will have a real piece of software that you have created. Abstract:
More information/* Copyright 2012 Robert C. Ilardi
/ Copyright 2012 Robert C. Ilardi Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
More informationG51PGP Programming Paradigms. Lecture OO-4 Aggregation
G51PGP Programming Paradigms Lecture OO-4 Aggregation 1 The story so far We saw that C code can be converted into Java code Note real object oriented code though Hopefully shows you how much you already
More informationANALYZING THE MOST COMMON PERFORMANCE AND MEMORY PROBLEMS IN JAVA. 18 October 2017
ANALYZING THE MOST COMMON PERFORMANCE AND MEMORY PROBLEMS IN JAVA 18 October 2017 Who am I? Working in Performance and Reliability Engineering Team at Hotels.com Part of Expedia Inc, handling $72billion
More informationProject #1 rev 2 Computer Science 2334 Fall 2013 This project is individual work. Each student must complete this assignment independently.
Project #1 rev 2 Computer Science 2334 Fall 2013 This project is individual work. Each student must complete this assignment independently. User Request: Create a simple magazine data system. Milestones:
More informationpublic static boolean isoutside(int min, int max, int value)
See the 2 APIs attached at the end of this worksheet. 1. Methods: Javadoc Complete the Javadoc comments for the following two methods from the API: (a) / @param @param @param @return @pre. / public static
More informationTable of Contents. Tutorial API Deployment Prerequisites... 1
Copyright Notice All information contained in this document is the property of ETL Solutions Limited. The information contained in this document is subject to change without notice and does not constitute
More informationFire Exit Announcement
Fire Exit Announcement Please note the locations of the surrounding emergency exits & located the nearest lit EXIT sign to you In the event of a fire alarm or other emergency, please calmly exit to the
More informationCSC301. Serialization & Persistence. CSC301, Winter 2016
CSC301 Serialization & Persistence CSC301, Winter 2016 Where does the data live? Most work is done in multiple sessions. You expect to be able to open files that you previously saved. You expect your desktop
More informationOpenCV and Vuforia. And the integration into the FTC SDK
OpenCV and Vuforia And the integration into the FTC SDK Introduction I am Torin Perkins Part of FTC team 11089 Bytes Of Kitkats I have been in FIRST for 6 years(3 FLL, 3 FTC) Used OpenCV and Vuforia for
More informationLecture Topics. Administrivia
ECE498SL Lec. Notes L8PA Lecture Topics overloading pitfalls of overloading & conversions matching an overloaded call miscellany new & delete variable declarations extensibility: philosophy vs. reality
More information/** * Created Aug 19, 2012 */ package com.roguelogic.util;
/ Copyright 2012 Robert C. Ilardi Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
More informationLesson 10A OOP Fundamentals. By John B. Owen All rights reserved 2011, revised 2014
Lesson 10A OOP Fundamentals By John B. Owen All rights reserved 2011, revised 2014 Table of Contents Objectives Definition Pointers vs containers Object vs primitives Constructors Methods Object class
More informationGetting Started. 1 by Conner Irwin
If you are a fan of the.net family of languages C#, Visual Basic, and so forth and you own a copy of AGK, then you ve got a new toy to play with. The AGK Wrapper for.net is an open source project that
More informationASSIGNMENT 5 Data Structures, Files, Exceptions, and To-Do Lists
ASSIGNMENT 5 Data Structures, Files, Exceptions, and To-Do Lists COMP-202B, Winter 2009, All Sections Due: Tuesday, April 14, 2009 (23:55) You MUST do this assignment individually and, unless otherwise
More informationChris Buckett. FOREWORD BY Seth Ladd MANNING 6$03/(&+$37(5
Chris Buckett FOREWORD BY Seth Ladd 6$03/(&+$37(5 MANNING Dart in Action by Chris Buckett Chapter 9 Copyright 2013 Manning Publications brief contents PART 1 INTRODUCING DART...1 1 Hello Dart 3 2 Hello
More informationQuestion Points Score Total 100
Midterm Exam #1 CMSC 433 Programming Language Technologies and Paradigms Spring 2014 March 13, 2014 Guidelines Put your name on each page before starting the exam. Write your answers directly on the exam
More informationJava How to Program, 10/e. Copyright by Pearson Education, Inc. All Rights Reserved.
Java How to Program, 10/e Copyright 1992-2015 by Pearson Education, Inc. All Rights Reserved. Data structures Collections of related data items. Discussed in depth in Chapters 16 21. Array objects Data
More informationI/O streams. Byte Streams Character Streams InputStream ByteArrayInputStream FileInputStream FilterInputStream
Course Name: Advanced Java Lecture 9 Topics to be covered I/O streams Byte Streams Character Streams InputStream ByteArrayInputStream FileInputStream FilterInputStream Introduction A Stream is a sequence
More informationCS 61B Data Structures and Programming Methodology. July 7, 2008 David Sun
CS 61B Data Structures and Programming Methodology July 7, 2008 David Sun Announcements You ve started (or finished) project 1, right? Package Visibility public declarations represent specifications what
More informationCS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 19: NOV. 15TH INSTRUCTOR: JIAYIN WANG
CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 19: NOV. 15TH INSTRUCTOR: JIAYIN WANG 1 Notice Assignment Class Exercise 19 is assigned Homework 8 is assigned Both Homework 8 and Exercise 19 are
More informationObjectives for this class meeting. 1. Conduct review of core concepts concerning contracts and pre/post conditions
CSE1720 Click to edit Master Week text 01, styles Lecture 02 Second level Third level Fourth level Fifth level Winter 2015! Thursday, Jan 8, 2015 1 Objectives for this class meeting 1. Conduct review of
More informationBasic Java IO Decorator pattern Advanced Java IO. Java IO - part 2 BIU OOP. BIU OOP Java IO - part 2
Java IO - part 2 BIU OOP Table of contents 1 Basic Java IO What do we know so far? What s next? 2 Example Overview General structure 3 Stream Decorators Serialization What do we know so far? What s next?
More informationMotivating Example: Two Types of Errors (2) Test-Driven Development (TDD) with JUnit. Motivating Example: Two Types of Errors (1)
Motivating Example: Two Types of Errors (2) Test-Driven Development (TDD) with JUnit EECS2030 B: Advanced Object Oriented Programming Fall 2018 CHEN-WEI WANG Approach 1 Specify: Indicate in the method
More informationWhat is it? CMSC 433 Programming Language Technologies and Paradigms Spring Approach 1. Disadvantage of Approach 1
CMSC 433 Programming Language Technologies and Paradigms Spring 2007 Singleton Pattern Mar. 13, 2007 What is it? If you need to make sure that there can be one and only one instance of a class. For example,
More informationJava Programming Unit 7. Error Handling. Excep8ons.
Java Programming Unit 7 Error Handling. Excep8ons. Run8me errors An excep8on is an run- 8me error that may stop the execu8on of your program. For example: - someone deleted a file that a program usually
More informationTest-Driven Development (TDD) with JUnit
Test-Driven Development (TDD) with JUnit EECS2030 B: Advanced Object Oriented Programming Fall 2018 CHEN-WEI WANG Motivating Example: Two Types of Errors (1) Consider two kinds of exceptions for a counter:
More informationEnums. In this article from my free Java 8 course, I will talk about the enum. Enums are constant values that can never be changed.
Enums Introduction In this article from my free Java 8 course, I will talk about the enum. Enums are constant values that can never be changed. The Final Tag To display why this is useful, I m going to
More informationCONVERTIGO SDK THE ULTIMATE CLIENT MOBILE API FOR CONVERTIGO MBAAS
CONVERTIGO SDK THE ULTIMATE CLIENT MOBILE API FOR CONVERTIGO MBAAS WHY CONVERTIGO SDK? Abstracts Mobile app developer from protocol complexity Gives simple cross-platform API to access Convertigo MBaaS
More informationSoftware Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore
Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore Lecture 04 Software Test Automation: JUnit as an example
More informationChapter Two Bonus Lesson: JavaDoc
We ve already talked about adding simple comments to your source code. The JDK actually supports more meaningful comments as well. If you add specially-formatted comments, you can then use a tool called
More informationCordova - Guide - Custom Plugins
Cordova - Guide - Custom Plugins Dr Nick Hayward A brief overview of custom plugin development for Cordova. Contents intro structure and design architecture - Android architecture - cross-platform Plugman
More informationObject-Oriented Design Lecture 3 CSU 370 Fall 2007 (Pucella) Friday, Sep 14, 2007
Object-Oriented Design Lecture 3 CSU 370 Fall 2007 (Pucella) Friday, Sep 14, 2007 Java We will be programming in Java in this course. Partly because it is a reasonable language, and partly because you
More informationException Handling Alternatives (Part 2)
Exception Handling Alternatives (Part 2) First published in Overload 31 Copyright 1999 Detlef Vollmann Resume In part 1, several alternative mechanisms for handling exceptional events were presented. One
More informationIn this lab we will practice creating, throwing and handling exceptions.
Lab 5 Exceptions Exceptions indicate that a program has encountered an unforeseen problem. While some problems place programmers at fault (for example, using an index that is outside the boundaries of
More informationPrelim 1 SOLUTION. CS 2110, September 29, 2016, 7:30 PM Total Question Name Loop invariants. Recursion OO Short answer
Prelim 1 SOLUTION CS 2110, September 29, 2016, 7:30 PM 0 1 2 3 4 5 Total Question Name Loop invariants Recursion OO Short answer Exception handling Max 1 15 15 25 34 10 100 Score Grader 0. Name (1 point)
More informationCS 351 Design of Large Programs Threads and Concurrency
CS 351 Design of Large Programs Threads and Concurrency Brooke Chenoweth University of New Mexico Spring 2018 Concurrency in Java Java has basic concurrency support built into the language. Also has high-level
More informationFile IO. Computer Science and Engineering College of Engineering The Ohio State University. Lecture 20
File IO Computer Science and Engineering College of Engineering The Ohio State University Lecture 20 I/O Package Overview Package java.io Core concept: streams Ordered sequences of data that have a source
More informationProcedural Java. Procedures and Static Class Methods. Functions. COMP 210: Object-Oriented Programming Lecture Notes 2.
COMP 210: Object-Oriented Programming Lecture Notes 2 Procedural Java Logan Mayfield In these notes we look at designing, implementing, and testing basic procedures in Java. We will rarely, perhaps never,
More informationFor Volunteers An Elvanto Guide
For Volunteers An Elvanto Guide www.elvanto.com Volunteers are what keep churches running! This guide is for volunteers who use Elvanto. If you re in charge of volunteers, why not check out our Volunteer
More informationClasses Classes 2 / 36
Classes 1 / 36 Classes Classes 2 / 36 Anatomy of a Class By the end of next lecture, you ll understand everything in this class definition. package edu. gatech. cs1331. card ; import java. util. Arrays
More informationCS18000: Programming I
CS18000: Programming I Testing Basics 19 April 2010 Prof. Chris Clifton Testing Programs Your programs are getting large and more complex How do you make sure they work? 1. Reason about the program Think
More informationNonblocking API. Introduction. Information About Reliability Support. Reliable Mode CHAPTER
CHAPTER 4 Nonblocking API Revised: November 8, 2010, Introduction This chapter introduces features unique to the Nonblocking Application Programming Interface (API). It lists all methods of the Nonblocking
More informationCOE318 Lecture Notes Week 10 (Nov 7, 2011)
COE318 Software Systems Lecture Notes: Week 10 1 of 5 COE318 Lecture Notes Week 10 (Nov 7, 2011) Topics More about exceptions References Head First Java: Chapter 11 (Risky Behavior) The Java Tutorial:
More informationAdministration. Exceptions. Leftovers. Agenda. When Things Go Wrong. Handling Errors. CS 99 Summer 2000 Michael Clarkson Lecture 11
Administration Exceptions CS 99 Summer 2000 Michael Clarkson Lecture 11 Lab 10 due tomorrow No lab tomorrow Work on final projects Remaining office hours Rick: today 2-3 Michael: Thursday 10-noon, Monday
More informationCOMP 213. Advanced Object-oriented Programming. Lecture 20. Network Programming
COMP 213 Advanced Object-oriented Programming Lecture 20 Network Programming Network Programming A network consists of several computers connected so that data can be sent from one to another. Network
More informationObjectives. Introduce static keyword examine syntax describe common uses
Static Objectives Introduce static keyword examine syntax describe common uses 2 Static Static represents something which is part of a type rather than part of an object Two uses of static field method
More informationArray Based Lists. Collections
Array Based Lists Reading: RS Chapter 15 1 Collections Data structures stores elements in a manner that makes it easy for a client to work with the elements Specific collections are specialized for particular
More informationLearning Objectives. Description. Your AU Expert(s) Trent Earley Behlen Mfg. Co. Shane Wemhoff Behlen Mfg. Co.
PL17257 JavaScript and PLM: Empowering the User Trent Earley Behlen Mfg. Co. Shane Wemhoff Behlen Mfg. Co. Learning Objectives Using items and setting data in a Workspace Setting Data in Related Workspaces
More informationLecture 16: HashTables 10:00 AM, Mar 2, 2018
CS18 Integrated Introduction to Computer Science Fisler, Nelson Lecture 16: HashTables 10:00 AM, Mar 2, 2018 Contents 1 Speeding up Lookup 1 2 Hashtables 2 2.1 Java HashMaps.......................................
More informationSTARCOUNTER. Technical Overview
STARCOUNTER Technical Overview Summary 3 Introduction 4 Scope 5 Audience 5 Prerequisite Knowledge 5 Virtual Machine Database Management System 6 Weaver 7 Shared Memory 8 Atomicity 8 Consistency 9 Isolation
More informationASSIGNMENT 5 Objects, Files, and More Garage Management
ASSIGNMENT 5 Objects, Files, and More Garage Management COMP-202B, Winter 2010, All Sections Due: Wednesday, April 14, 2009 (23:55) You MUST do this assignment individually and, unless otherwise specified,
More informationCS 61B Discussion 5: Inheritance II Fall 2014
CS 61B Discussion 5: Inheritance II Fall 2014 1 WeirdList Below is a partial solution to the WeirdList problem from homework 3 showing only the most important lines. Part A. Complete the implementation
More informationChapter 6 Lab Classes and Objects
Gaddis_516907_Java 4/10/07 2:10 PM Page 51 Chapter 6 Lab Classes and Objects Objectives Be able to declare a new class Be able to write a constructor Be able to write instance methods that return a value
More informationBASIC COMPUTATION. public static void main(string [] args) Fundamentals of Computer Science I
BASIC COMPUTATION x public static void main(string [] args) Fundamentals of Computer Science I Outline Using Eclipse Data Types Variables Primitive and Class Data Types Expressions Declaration Assignment
More informationCSCI 200 Lab 2 Inheritance, Polymorphism & Data Streams
CSCI 200 Lab 2 Inheritance, Polymorphism & Data Streams In this lab you will write a set of simple Java interfaces and classes that use inheritance and polymorphism. You will also write code that uses
More informationCS558 Programming Languages
CS558 Programming Languages Winter 2018 Lecture 7b Andrew Tolmach Portland State University 1994-2018 Dynamic Type Checking Static type checking offers the great advantage of catching errors early And
More informationCMSC131. Library Classes
CMSC131 Designing Classes Library Classes Due to Java being 100% object-oriented, all code must live inside a class but there is some functionality/information that might be best kept in a more central
More informationText Input and Conditionals
Text Input and Conditionals Text Input Many programs allow the user to enter information, like a username and password. Python makes taking input from the user seamless with a single line of code: input()
More informationProgramming Language Concepts: Lecture 2
Programming Language Concepts: Lecture 2 Madhavan Mukund Chennai Mathematical Institute madhavan@cmi.ac.in http://www.cmi.ac.in/~madhavan/courses/pl2009 PLC 2009, Lecture 2, 19 January 2009 Classes and
More informationProject 1 Computer Science 2334 Spring 2016 This project is individual work. Each student must complete this assignment independently.
Project 1 Computer Science 2334 Spring 2016 This project is individual work. Each student must complete this assignment independently. User Request: Create a simple movie data system. Milestones: 1. Use
More informationThis walkthrough assumes you have completed the Getting Started walkthrough and the first lift and shift walkthrough.
Azure Developer Immersion In this walkthrough, you are going to put the web API presented by the rgroup app into an Azure API App. Doing this will enable the use of an authentication model which can support
More informationWeek 12. Streams and File I/O. Overview of Streams and File I/O Text File I/O
Week 12 Streams and File I/O Overview of Streams and File I/O Text File I/O 1 I/O Overview I/O = Input/Output In this context it is input to and output from programs Input can be from keyboard or a file
More informationWeek 3 Classes and Objects
Week 3 Classes and Objects written by Alexandros Evangelidis, adapted from J. Gardiner et al. 13 October 2015 1 Last Week Last week, we looked at some of the different types available in Java, and the
More informationCSE 331 Final Exam 3/16/15 Sample Solution
Question 1. (12 points, 3 each) A short design exercise. Suppose Java did not include a Set class in the standard library and we need to store a set of Strings for an application. We know that the maximum
More informationAn Introduction to Subtyping
An Introduction to Subtyping Type systems are to me the most interesting aspect of modern programming languages. Subtyping is an important notion that is helpful for describing and reasoning about type
More informationBirkbeck (University of London) Software and Programming 1 In-class Test Mar 2018
Birkbeck (University of London) Software and Programming 1 In-class Test 2.1 22 Mar 2018 Student Name Student Number Answer ALL Questions 1. What output is produced when the following Java program fragment
More informationGetting started with Java
Getting started with Java Magic Lines public class MagicLines { public static void main(string[] args) { } } Comments Comments are lines in your code that get ignored during execution. Good for leaving
More informationPackaging Data for the Web
Packaging Data for the Web EN 605.481 Principles of Enterprise Web Development Overview Both XML and JSON can be used to pass data between remote applications, clients and servers, etc. XML Usually heavier
More informationCSC Java Programming, Fall Java Data Types and Control Constructs
CSC 243 - Java Programming, Fall 2016 Java Data Types and Control Constructs Java Types In general, a type is collection of possible values Main categories of Java types: Primitive/built-in Object/Reference
More informationObject Oriented Programming. Week 7 Part 1 Exceptions
Object Oriented Programming Week 7 Part 1 Exceptions Lecture Overview of Exception How exceptions solve unexpected occurrences Catching exceptions Week 7 2 Exceptions Overview Week 7 3 Unexpected Occurances
More informationCOMP 250 Winter 2011 Reading: Java background January 5, 2011
Almost all of you have taken COMP 202 or equivalent, so I am assuming that you are familiar with the basic techniques and definitions of Java covered in that course. Those of you who have not taken a COMP
More information