Top Banner
JUG 2007 Praha Practical API Design Jaroslav Tulach Sun Microsystems http://www.netbeans.org
18

Practical API Design

May 30, 2018

Download

Documents

tneogi
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 1/18

JUG 2007 Praha

Practical API Design

●Jaroslav Tulach

Sun Microsystemshttp://www.netbeans.org

Page 2: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 2/18

Agenda

What makes good API?

Like a free speech

Examples

Q&A

Page 3: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 3/18

What makes an API good?

• API is used for communication> build trust, clearly describe plans

• Must be:> a) beautiful> b) correct> c) simple> d) good performance

• Not necessarily!

http://apidesign.org

Page 4: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 4/18

What makes a technology good?

• Coolness> before adoption

• Time to market

> at beginning of adoption• Total Cost of Ownership

> then and forever

http://apidesign.org

Page 5: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 5/18

API is a technology facade

• Hype & Community• Limited understanding

• Empiristic programming

> Cluelessness• Error forgiving

• Easy upgradability

http://apidesign.org

Page 6: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 6/18

Rules for Successful API design

• Use case driven API design> use cases -> scenarios -> javadoc

• Consistent API design> An interface that is predictable serves better than one which is

locally optimal but inconsistent across the whole set.

• Simple and clean API design> less is more - expose only necessary functionality

•  Think about future evolution> First version is not going to be perfect

Page 7: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 7/18

Like Human Rights

What is the most important right?

  The right for free speech. Because if you have

right to speak freely, you can always talk about the missing ones and ask for them.

Karel Havlíček Borovský

http://apidesign.org

Page 8: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 8/18

Evolution

• First version is insufficient• Incremental changes

• Knowing your clients is not possible

• Preservation of Investments• Agile API Design

http://apidesign.org

Page 9: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 9/18

Backward Compatibility

• Source> ability to compile against new version

• Binary

> ability to link to new version• Functional

> ability to compute the same result

http://apidesign.org

Page 10: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 10/18

Evaluation of an API Quality

• Customer centric – easy to use• Use cases, scenarios, javadoc

• Future evolution

•  Test coverage

• quality = code Δ specification

• the "amoeba" model

http://apidesign.org

Page 11: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 11/18

The Amoeba Model

http://apidesign.org

Page 12: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 12/18

The Amoeba Model

http://apidesign.org

Page 13: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 13/18

The Amoeba Model

http://apidesign.org

Page 14: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 14/18

API Fest

• Agile to ad-absurdum

• Only about evolution

• Not a beauty contest

• Evaluated by you

http://apidesign.org

Page 15: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 15/18

API Fest '08 Roadmap

• Solutions for Task 1 arrived> need to align

• Additional 2-5 rounds

> once, twice a week•  Judgment Day

• Finish by Oct 23, 2008

http://apidesign.org

Page 16: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 16/18

API Fest Don'ts

• Do not fix previous mistakes> usually leads to incompatibilities

• Runtime aspects are important

• Do not remove anything from the API• Add carefully

> new class/interface is OK > new method in subclassable type is not OK 

http://apidesign.org

Page 17: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 17/18

API Fest Gotchas

• Seeking for evolution problems with God's eyes> knowing all the previous versions> line by line diffs

• No permissions, please> no reflection> no getClass().getName()

http://apidesign.org

Page 18: Practical API Design

8/14/2019 Practical API Design

http://slidepdf.com/reader/full/practical-api-design 18/18

Questions & Answers

Jaroslav Tulachhttp://www.apidesign.org

Practical API DesignConfessions of a Java Framework Architect

ISBN-10: 1430209739