• Stars
    star
    1
  • Language
    CSS
  • Created about 11 years ago
  • Updated about 11 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Scala talk for Brighton Java

Brighton Java: Intro to Scala Sample App

This code accompanies the talk An Introduction to Scala by Dave Gurnell and Richard Dallaway, given at BrightonJava on 7th August 2013. The talk abstract follows:

Dave Gurnell and Richard Dallaway present a brief introduction to Scala โ€“ a powerful programming language for the JVM. In the talk, the speakers introduce Scala from a Java programmerโ€™s perspective, and show how its support for object-oriented and functional programming styles can provide a smooth transition to greater productivity and code reliability.

This is a sample tweet listing app that we implemented in Java and Scala to compare syntax and idioms in the two languages. We ultimately didn't use the app in the talk - see https://github.com/davegurnell/brighton-java-slides for our slides.

Viewing the code

The source code is in the following directories:

  • Java version - src/main/java/tweetzor;
  • Scala version - src/main/scala/tweetzor2.

Each application is split into a main package (tweetzor and tweetzor2 respectively) and a core subpackage. The focus in the talk is on development of the code in the main package - we only touch on the core package briefly.

Docco

There are pre-built Docco documentation pages for both versions of the app in the docco directory. This is the recommended way of browsing the code:

  • start with the Main and Menu classes;
  • then go to Tweet and Location;
  • then to TwitterClient;
  • finally, the adventurous can go to PostcodeDatabase and the com.untyped.location package.

There's a menu for switching files in the top right of the page.

Eclipse

The project is built using SBT. To view the code in the Eclipse IDE:

  1. Install the Scala plugin for Eclipse. The simplest way to do this is to download the pre-packaged Scala IDE bundle from [http://scala-ide.org], which includes both Eclipse itself and the Scala plugin in a single archive.

  2. Clone the git repo and change to its root directory:

    git clone https://github.com/davegurnell/brighton-java-scala-talk.git
    cd brighton-java-scala-talk
    
  3. Run the sbt eclipse script to generate Eclipse configuration files. The first time you run SBT it may take some time to download and cache JAR files on your hard drive (look in ~/.ivy2 if you want to delete them later):

    ./sbt.sh eclipse
    
  4. Import the code as an Eclipse project by selecting File menu / Import... / General / Existing Projects into Workspace and selecting the root directory of the repo.

Intellij IDEA 12

  1. Install the Scala plugin for Intellij.

  2. Clone the git repo and change to its root directory:

    git clone https://github.com/davegurnell/brighton-java-scala-talk.git
    cd brighton-java-scala-talk
    
  3. Run the sbt gen-idea script to generate Intellij configuration files. The first time you run SBT it may take some time to download and cache JAR files on your hard drive (look in ~/.ivy2 if you want to delete them later):

    ./sbt.sh gen-idea
    
  4. Import the code as an Intellij project by selecting File Menu / Open... and selecting the root directory of the repo.

Building the Code

Build the code in the usual way using your trusty IDE, or run the following command from the root directory of the repo:

./sbt compile

Running the Code

Prerequisites

Before you run the application you will need to do two things:

  1. Create a Twitter4j configuration file using settings from http://dev.twitter.com.

  2. Install a postcodes database file (optional).

The application needs a Twitter4j configuration file to run. This file has been left out of the Git repo to avoid security issues. You can generate your own configuration file easily - the procedure is as follows:

  1. Go to http://dev.stitter.com and sign in.

  2. Choose My applications from the drop down menu in the top right.

  3. Click Create a new application and fill in the form. Name the application anything you want. You can skip the Callback URL field.

  4. Under Your access token, generate an access token for your own access to the app.

  5. Use the values of the consumer key and access tokens to fill the following template and save it in src/main/resources/twitter4j.properties:

    debug=false
    oauth.consumerKey=“your consumer key”
    oauth.consumerSecret=“your consumer secret”
    oauth.accessToken=“your access token”
    oauth.accessTokenSecret=“your access token secret”
    loggerFactory=twitter4j.internal.logging.NullLoggerFactory
    

The postcodes file is only used in the final version of the application. Installing it is optional. If it is missing, the application will simply report everyone Tweet's location as Unknown.

The file has been left out of the Git repo to avoid any potential licencing issues. You can get your own copy easily - the installation procedure is as follows:

  • TODO: Complete these instructions...

  • Essentially, download Codepoint, an open source CSV postcode database available from the Ordnance Survey. Concatenate all of the CSV files and name the resulting file src/main/resources/postcodes.csv.

All Done - Let's Go

Run the code in the usual way using your trusty IDE, or run the following command from the root directory of the repo:

./sbt run

You will be prompted to choose the Java version of the app (tweetzor.Main) or the Scala version (tweetzor2.Main).

More Repositories

1

bridges

Generate bindings for Scala types in other programming languages.
Scala
56
star
2

checklist

Validation library for Scala.
Scala
47
star
3

unindent

Indent-adjusted multiline string literals for Scala.
Shell
47
star
4

bulletin

Automatically perform shallow merges on case classes. Treat your data with the latest updates!
Scala
42
star
5

meowsynth

The mighty meowing synthesizer!
Scala
30
star
6

validation

Scala data validation library
Scala
29
star
7

typelevel-todomvc

Scala
25
star
8

atlas

A tiny embedded scripting language implemented in Scala.
Scala
24
star
9

shapeless-guide

The Type Astronaut's Guide to Shapeless
19
star
10

functional-data-validation

Slides and code samples for a talk on thinking functionally (and validating web forms).
Scala
18
star
11

99-ways-to-di

Slides from my lightning talk on Dependency Injection at Scala Central #5.
14
star
12

css-selector

Lift-style CSS selector transforms based on Scalate's Scuery
Scala
10
star
13

tipi

Tiny templating language written in Scala.
Scala
10
star
14

macros-vs-shapeless

Slides and code samples on meta-programming techniques in Scala.
Scala
10
star
15

spandoc

Write Pandoc filters in Scala.
Scala
7
star
16

scalalol-2011-talk

Slides and code samples for talk at Scala Lift-Off London 2011.
Scala
6
star
17

scala-opengl

Simple OpenGL examples using Scala, LWJGL, and sbt-lwjgl
Scala
6
star
18

shapeless-guide-slides

Slides for my Scala World 2016 workshop on shapeless.
6
star
19

smartypants

Simple smart constructor generation for Scala.
Scala
4
star
20

scalax2gether-2017

Workshop and hack proposals for the Scala Exchange Hack Day (ScalaX2gether 2017)
4
star
21

shapeless-sandbox

Scala
3
star
22

scalax-2014

Slides and code samples for my Scala Exchange 2014 talk on Functional Data Validation.
3
star
23

typelevel-philly-2016

3
star
24

sbt-less

Superseded by sbt-less in https://github.com/untyped/sbt-plugins.
Scala
3
star
25

akka-streams-case-study

Scala
2
star
26

poker-case-study

Poker hand comparison in Scala. A fairly advanced "Essential Scala" case study.
Scala
2
star
27

interpreter-case-study

Scala case study about building an interpreter and a simple DSL.
Scala
2
star
28

cats-error-case-study

Scala
2
star
29

bus-driver-case-study

Gossiping Bus Drivers Kata
Scala
2
star
30

concurrency-case-study

Scala
2
star
31

scala-rpg-test

A sandbox project for playing with Scala and the graphics from Browserquest.
Scala
2
star
32

versionit

Grab your Git commit hash as a Scala String.
Scala
2
star
33

advanced-scala-scalax15

Code written at Advanced Scala at Scala Exchange 2015
Scala
1
star
34

spectaskular-iphone

iPhone todo list app
Objective-C
1
star
35

session-cell

Cookie-based in-memory session storage for the Racket HTTP Server.
Scheme
1
star
36

kitties-case-study

Meow!
Scala
1
star
37

gilded-rose-case-study

Code refactoring kata
Scala
1
star
38

conway-case-study

Scala
1
star
39

mars-rover-case-study

Scala
1
star
40

asyncjs-creative-fp

Creative Functional Programming talk for AsyncJS.
1
star
41

parallel-case-study

Scala
1
star
42

bank-ocr-case-study

Scala
1
star
43

play-json-case-study

Scala
1
star
44

calc-case-study

Scala
1
star
45

bowling-case-study

Scala
1
star
46

paths-case-study

Essential Scala case study: selecting paths from a route finder service
Scala
1
star
47

typeclub

Scala
1
star
48

tagless-case-study

Scala
1
star
49

doodlejs

Javascript port of Doodle
JavaScript
1
star
50

composejs

Javascript port of Compose (https://github.com/underscoreio/compose).
JavaScript
1
star
51

fpinscala

My attempts at the exercises in Functional Programming in Scala.
Scala
1
star
52

shapeless-guide-code

The Type Astronaut's Guide to Shapeless (Example Code)
1
star
53

scaladays-berlin-2016

1
star
54

property-based-testing-workshop

Scala
1
star
55

advanced-scala-exercises

Scala
1
star
56

advanced-scala

The old source code repository for Scala with Cats
1
star
57

cats-effect-sandbox

An empty SBT project with dependencies on Cats and Cats Effect.
Scala
1
star
58

away-with-the-types

Scala
1
star