The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005.

Slides:



Advertisements
Similar presentations
Connecting to Databases. connecting to DB DB server typically a standalone application Server runs on localhost for smaller sites –i.e. Same machine as.
Advertisements

Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit.
Lecture plan Information retrieval (from week 11)
Web Services Web Services are the basic fundamental building blocks of invoking features that can be accessed by an application program. The accessibility.
Chapters 14 & 15 Internet Databases. E-Commerce  Bringing new products, services, or ideas to market, supporting and enhancing business operations 
Introduction to Servlets Based on: Hall, Brown, Core Servlets and JavaServer Pages.
G O B E Y O N D C O N V E N T I O N WORF: Developing DB2 UDB based Web Services on a Websphere Application Server Kris Van Thillo, ABIS Training & Consulting.
 Java  Python  Bigtable(Bt) is a distributed storage system for managing structured data that is designed to scale to a very large size.  Query Language.
Distributed Application Development B. Ramamurthy.
An introduction to Java Servlet Programming
OCT 1 Master of Information System Management Organizational Communications and Distributed Object Technologies Lecture 14: Naming.
Introduction to Servlet & JSP
JSP Architecture  JSP is a simple text file consisting of HTML or XML content along with JSP elements  JSP packages define the interface for the compiled.
Java Servlets. What Are Servlets? Basically, a java program that runs on the server Basically, a java program that runs on the server Creates dynamic.
Gayle J Yaverbaum, PhD Professor of Information Systems Penn State Harrisburg.
Server-side Technologies
Introduction Servlets and JSP Celsina Bignoli
XML for E-commerce IV Helena Ahonen-Myka. In this part... n Some solutions for delivering dynamic content n Example of using XML.
Development Platforms Computer Networks Natawut Nupairoj, Ph.D. Department of Computer Engineering Chulalongkorn University.

1 Java Database Connection (JDBC) There are many industrial-strength DBMS's commercially available in the market. Oracle, DB2, and Sybase are just a few.
Java Omar Rana University of South Asia. Course Overview JAVA  C/C++ and JAVA Comparison  OOP in JAVA  Exception Handling  Streams  Graphics User.
Examples of Using Servlets and JSP Representation and Management of Data on the Internet.
Servlets. - Java technology for Common Gateway Interface (CGI) programming. - It is a Java class that dynamically extends the function of a web server.
CSC 2720 Building Web Applications
Li Tak Sing COMPS311F. Static attributes in Servlets Since Servlets are also Java classes, you can also use static attributes to store values that can.
Chapter 7 Java Server Pages. Objectives Explain how the separation of concerns principle applies to JSP Describe the operation and life-cycle of a JSP.
EJB Framework.  As we know, EJB is the center of the J2EE architecture that provides a sturdy framework for building enterprise applications. The major.
Topic : JNDI Kaster Nurmukan. JNDI2(c)CDAC(Formerly NCST) What is JNDI? Naming and Directory Services Naming Concepts Issues JNDI Architecture Programming.
Web Server Programming 1. Nuts and Bolts. Premises of Course Provides general introduction, no in-depth training Assumes some HTML knowledge Assumes some.
Struts J2EE web application framework “ Model 2 ” Model View Controller Controller Servlet Key features XML metadata Struts taglib Simplified form validation.
Stanisław Osiński, 2002JSP – A technology for serving dynamic web content Java Server Pages™ A technology for serving dynamic web content Stanisław Osiński,
Java Introduction to JNI Prepared by Humaira Siddiqui.
CIS 644 Aug. 25, 1999 tour of Java. First … about the media lectures… we are experimenting with the media format please give feedback.
MDCFUG Is Java in Your Future? Tyler Williams Principal dataTerrace
1 JSP with Custom Tags Blake Adams Introduction Advanced Java Server Pages – Custom Tags Keyterms: - Tag Library Descriptor(TLD) - Tag Libraries.
Java Servlets & Java Server Pages Lecture July 2013.
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
A Presentation By V AIBHAV S AHARAN Web-enHanced Information Management COMS E6125.
Presentation: RMI Continued 2 Using The Registry & Callbacks.
Java Naming and Directory Interface Matt. 2 What is JNDI.
JavaServer Page by Antonio Ko. Overview ► Introduction ► What is a servlet? ► What can servlets do? ► Servlets Vs JSP ► Syntax ► Samples ► JavaBean ►
Java and Databases. JDBC Architecture Java Application JDBC API Data Base Drivers AccessSQL Server DB2InformixMySQLSybase.
JSP Pages. What and Why of JSP? JSP = Java code imbedded in HTML or XML –Static portion of the page is HTML –Dynamic portion is Java Easy way to develop.
Hints for Assignment #8. Initial Screen Hints for the initial page You need a DOCTYPE with the proper namespaces defined You need to import the facebook.
Middleware 3/29/2001 Kang, Seungwoo Lee, Jinwon. Description of Topics 1. CGI, Servlets, JSPs 2. Sessions/Cookies 3. Database Connection(JDBC, Connection.
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, Responds oriented other.
1 Introduction to Servlets. Topics Web Applications and the Java Server. HTTP protocol. Servlets 2.
Advanced Java Session 6 New York University School of Continuing and Professional Studies.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Basic JSP Celsina Bignoli Problems with Servlets Servlets contain –request processing, –business logic –response generation all lumped.
COMP9321 Web Application Engineering Semester 2, 2015 Dr. Amin Beheshti Service Oriented Computing Group, CSE, UNSW Australia Week 3 1COMP9321, 15s2, Week.
J2EE Chris Hundersmarck Maria Baron Jeff Webb.  Java 2 Platform, Micro Edition (J2ME)  Java 2 Platform, Standard Edition (J2SE)  Java 2 Platform, Enterprise.
Session Beans Based on: Patel, Brose, Silverman, Mastering Enterprise JavaBeans 3.0.
Basics of JDBC Session 14.
Java Servlets and Java Server Pages
Modern Programming Language. Web Container & Web Applications Web applications are server side applications The most essential requirement.
Presentation: RMI Continued 2 Using The Registry & Callbacks.
Enterprise JavaBeans: Fundamentals. EJB Fundamentals(c)CDAC(Formerly NCST)2 Contents Introduction Technology Overview EJB Architecture EJB Specification.
ClaRA web services V. Gyurjyan Clas12 Software Meeting
 Java Server Pages (JSP) By Offir Golan. What is JSP?  A technology that allows for the creation of dynamically generated web pages based on HTML, XML,
Java Programming: Advanced Topics 1 Building Web Applications Chapter 13.
J2EE/Java EE Apache Tomcat v9 IBM Websphere v8 Redhat JBoss EAP v6 Oracle Weblogic v12 Fusion Web Tier ServletsJSPJSF Business Tier JMXJMSEJB.
Bayu Priyambadha, S.Kom. Static content  Web Server delivers contents of a file (html) 1. Browser sends request to Web Server 3. Web Server sends HTML.
OOSD Using Java CBTS Framework. 11/2/04CBTS2 Servlet  A servlet is a Java program that can extends Web server’s functionality.  Servlets interact with.
The Holmes Platform and Applications
Master of Information System Management
Java Servlets By: Tejashri Udavant..
Pre-assessment Questions
Plug-In Architecture Pattern
Presentation transcript:

The Ecology and Biodiversity of Libraries Chris Mueller Software Libraries Workshop Dagstuhl, Germany March 9, 2005

Chris Mueller Software Libraries Workshop, Dagstuhl Germany2 Ecosystems ( ( Biologists gain knowledge by observing nature… Can we observe libraries in the wild?

March 9, 2005Chris Mueller Software Libraries Workshop, Dagstuhl Germany3 An Expedition into the Strange World of Libraries…

March 9, 2005Chris Mueller Software Libraries Workshop, Dagstuhl Germany4 Network Library #include "winsock2.h" void socket_connect(const char* host, const int port) { WSADATA wsaData; int iResult = WSAStartup( MAKEWORD(2,2), &wsaData ); if ( iResult != NO_ERROR ) // ignore; sockaddr_in clientService; clientService.sin_family = AF_INET; clientService.sin_addr.s_addr = inet_addr( host ); clientService.sin_port = htons( port ); if ( connect( m_socket, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR) { WSACleanup(); return; } //... } Type Language neutral, platform neutral protocol library Usage Communicated between applications Components System libraries, Vendor libraries Users Software developers TCP/IP

March 9, 2005Chris Mueller Software Libraries Workshop, Dagstuhl Germany5 Plugin Library # From httpd.conf LoadModule rewrite_module libexec/httpd/mod_rewrite.so Type Application specific plugin library Usage Extend Apache's feature set Components System libraries Language C Users Software developers, Webmasters Apache Modules /* C Interface */ /* the main config structure */ module AP_MODULE_DECLARE_DATA rewrite_module = { STANDARD20_MODULE_STUFF, config_perdir_create, /* create per-dir config structures */ config_perdir_merge, /* merge per-dir config structures */ config_server_create, /* create per-server config structures */ config_server_merge, /* merge per-server config structures */ command_table, /* table of config commands */ register_hooks /* register hooks */ };

March 9, 2005Chris Mueller Software Libraries Workshop, Dagstuhl Germany6 Language Platform import java.util.Date; class HelloWorld { public static void main(String args[]) { Date now = new Date(); System.out.println(now + "Hello world!"); } --> Sat Mar 05 12:54:25 EST 2005: Hello world! Type Platform, library and runtime specifications, library collection Usage Application development Components System libraries Language Java, C Users Software developers J2SE

March 9, 2005Chris Mueller Software Libraries Workshop, Dagstuhl Germany7 Specifications Type Domain specific library specification Usage Enterprise application development, service and protocol abstraction Components J2SE, system libraries, vendor libraries Language Java Users Software developers J2EE Type Platform specific protocol abstraction Usage Directory lookup Components J2SE, J2EE, system libraries, vendor libraries Users Software developers JNDI import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import java.util.Hashtable; class Lookup { Object Lookup(String name) { // Identify service provider to use Hashtable env = new Hashtable(11); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory"); Object result = null; try { Context ctx = new InitialContext(env); Object obj = ctx.lookup(name); ctx.close(); } catch (NamingException e) { } return result; } (

March 9, 2005Chris Mueller Software Libraries Workshop, Dagstuhl Germany8 Script Library #!/bin/bash # Add the count of new log entries to the log stats file if [ -z "$1" ]; then echo usage: $0 log-file log-stats-file exit fi if [ -z "$2" ]; then echo usage: $0 log-file log-stats-file exit fi echo `date` `wc -l $1` >> $2 % log-counter library-examples.txt log.dat % cat log.dat Sat Mar 5 13:05:51 EST library-examples.txt Sat Mar 5 13:06:23 EST library-examples.txt Type System commands Usage System administration, monitoring, reporting Components System commands, language libraries Language Bash, csh, Perl, Python, etc… Users Sysadmins, software developers Log Monitor

March 9, 2005Chris Mueller Software Libraries Workshop, Dagstuhl Germany9 Data Access Libraries package com.mail.ejb.eventlog; import java.util.*; import javax.ejb.*; import javax.naming.*; import java.rmi.RemoteException; // Table Abstraction public abstract class UserLogBean implements EntityBean { // Access methods for relationship fields public abstract Collection getReadEvents(); public abstract void setReadEvents(Collection events); // Business methods public void addReadEvent(int eventId) { try { Collection events = getReadEvents(); events.add(eventId); } catch (Exception ex) { throw new EJBException(ex.getMessage()); } //... } // Query Abstraction public class EventLogControllerBean implements SessionBean { private LocalLogHome logHome public void logUserReadMail(String userId, String messageId) { LocalUserLog log = logHome.findByPrimaryKey(userId); log.addMailReadEvent(messageId); } Type OO relational database abstraction Usage Access database tables Components J2SE, J2EE Language Java, SQL Users Software developers, UI designers Enterprise JavaBeans Type Data source library and abstaction layer Usage Abstract vendor protocols and data sources Components Vendor libraries, language libraries Language Java, SQL Users Software developers, DBAs, DB developers ODBC

March 9, 2005Chris Mueller Software Libraries Workshop, Dagstuhl Germany10 Database Libraries -- Function that counts a users mail messages create or replace function count_messages ( user integer ) return integer as begin return select count(*) into temp_count from message where user_id = user; end; Type Procedural database access Usage Create SQL functions, database triggers Components SQL, DB libraries Language PL/SQL, Java, C/C++, Perl Users DBAs, DB developers Stored Procedures Type Database extension libraries Usage Extend database operations Components DB libraries, language libraries Language C/C++, Java Users Software developers, DB developers Database Cartridges/Packages -- Apply multidimensional scaling on to the data -- and return the result in a new temporary table select MDS(user, time, event, duration) from mail_events; |Row | X | Y | | 1 |.4 |.5 | | 2 |.2 |.9 | … /* Possible C signature */ db_table* MDS(db_table *queryResult, db_query_info *info) {... }

March 9, 2005Chris Mueller Software Libraries Workshop, Dagstuhl Germany11 Application Frameworks and Business Libraries package com.mail.applogic; import javax.servlet.*; import javax.servlet.http.*; import com.mail.businesslogic.*; // Process user mail requests class MailServlet extends HttpServlet { private String user; private String message; private int messageId; //... public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.user = request.getParameter("user"); String event = request.getParameter("event"); if(event.equals("showMessage")) { this.messageId = request.getParameter("messageId"); this.handleShowMessage(); } //... } void handleShowMessage() { Mailbox mb = Mailbox(this.user); this.message = mb.GetMessage(this.messageId); } Type Application framework Usage Application logic for Web applications Components J2SE, J2EE, business libraries Language Java Users Software developers Servlet API Type Domain library Usage Abstract mail data types and operations Components J2SE, j2EE, business libraries Language C/C++, Java Users Software developers, DB developers Mail Library

March 9, 2005Chris Mueller Software Libraries Workshop, Dagstuhl Germany12 Tag Libraries taglib prefix="mailapp” uri=" Libraries Libraries are so cool! I can't wait to go to Germany and talk about... Type User interface, data access Usage Data layout, presentation Components J2EE, business libraries Language XML, Java (JSP) Users UI designers, software developers Mail Tag Library

March 9, 2005Chris Mueller Software Libraries Workshop, Dagstuhl Germany13 Style Libraries Type Data structure manipulation Usage Transform data to other formats Components Language libraries Transformation Libraries Language XSLT, Perl, Python, Bash, csh Users UI designers, software developers, “branders”, translators Device Transform (mail-to-html.xsl) From: Subject: Libraries Libraries are so cool! I can't wait to go to Germany... Brand Transform (osl-brand.xsl) OSL Mail From: Subject: Libraries Libraries are so cool! I can't wait to go to Germany... You will obey Andy I18N Transform (translate.pl) OSL Post Von: Thema: Libraries Libraries are so cool! I can't wait to go to Germany... Sie befolgen Andy

March 9, 2005Chris Mueller Software Libraries Workshop, Dagstuhl Germany14 Component Libraries # COM in Python: from win32com.client import Dispatch xl = Dispatch("Excel.Application") xl.Visible = 1 xl.Workbooks.Add() xl.ActiveSheet.Cells(1,1).Value = ’Libraries rule!' xl.ActiveSheet.Cells(2,1).Value = ’Dagstuhl rules!' xl.ActiveWorkbook.Close(SaveChanges=0) xl.Quit() Type Language neutral software components, platform Usage Expose language-specific libraries to other languages and applications Components Language libraries Language All Users Everyone COM

March 9, 2005Chris Mueller Software Libraries Workshop, Dagstuhl Germany15 Quick Observations  Types of Libraries Protocol libraries Plugin libraries Platforms Frameworks Specifications System commands Database libraries Style libraries Component libraries  Users of Libraries Software developers DB developers System administrators UI designers DBAs End users  Ways to Access Libraries Programming languages Shells Menus Config files

March 9, 2005Chris Mueller Software Libraries Workshop, Dagstuhl Germany16 Library Research  Libraries are plentiful  Libraries can be observed in their natural habitat  Every library user has a story Library research should follow the traditional sciences and have a strong empirical component.