# The LiveConnect/Plug-in SDK
Where to start?

This document gives an overview of what you'll find in the Netscape LiveConnect/Plug-in SDK, and hopefully can answer a few questions you may have about getting started.

## Where can I download the SDK?

Check out the LiveConnect/Plug-in SDK download page.

## How's the SDK organized?

The SDK has roughly the following directory structure:

>     sdk
>     sdk/bin
>     sdk/bin/Platform		-- platform specific binaries
>     sdk/bin/Platform/javah		-- tools
>     sdk/include/			-- headers: npapi.h, jri.h, etc.
>     sdk/common/			-- glue files: npunix.c npwin.cpp npmac.cpp
>     sdk/doc/			-- same as eng/mozilla/3.0/handbook/plugins
>     sdk/classes/			-- zip files for each platform
>     sdk/examples/			-- example code
>     sdk/examples/Framework/		-- C++ framework code used by the examples
>     sdk/examples/SomeExample	-- one of the examples, listed below
>     sdk/examples/SomeExample/src	-- all source
>     sdk/examples/SomeExample/test	-- html & stuff
>     sdk/examples/SomeExample/win	-- win-specific (project/make files)
>     sdk/examples/SomeExample/mac	-- mac-specific (project files)
>     sdk/examples/SomeExample/unix	-- makefiles for all unix versions

where Platform is something like SunOS2.4 or Win32. The examples are:

- Simple: A simple plug-in that does it all! It's a cross-platform "hello world" plug-in, it uses LiveConnect to interact with Java and JavaScript. Check this out first. (readme)

- CharFlipper: A simple plug-in that rotates through a set of characters and is LiveConnect enabled. (Works on Mac and Windows.) (readme)

- LivePict: This plug-in displays Macintosh PICT images. (Mac only.) (readme)

- NPAvi: This plug-in displays AVI movies and is LiveConnect-enabled. (Windows only.) (readme)

- PPViewText: This plug-in displays text using Metrowerks' PowerPlant. (Mac only.) (readme)

- WinTemplate: An empty Windows example and project file that you can start from.

- MacTemplate: An empty Mac example and project file that you can start from.

- UnixTemplate: An empty Unix example and make files that you can start from.

- Framework: A set of C++ classes to help with plug-in development. Check out the (not yet complete) documentation.

Note that if you're downloading the SDK for a specific platform you'll get a subset of these examples. On the CD you'll get them all.

Also be sure to read the release notes.

## I've done this before. What's new?

If you're upgrading an existing plug-in to 3.0b5 from 3.0b4 or an earlier version, look at the latest changes document. It will give you a step-by-step guide to updating your plug-in.

## I'm new. Where should I start?

Start by looking at an example plug-in, build it and test it out. The Simple example is a good one to start with because it works on all platforms. It demonstrates what's involved in developing a cross-platform plug-in that does both the traditional plug-in functionality and is LiveConnect-enabled (i.e. can be controlled by Java and JavaScript).

The important thing to keep in mind is that Java provides the central point of integration for these technologies. Plug-ins access features of the Navigator through the standard Plug-in API, and by calling into Java. Java can access new features provided by plug-ins by calling native methods they provide that exports these features. JavaScript can control plug-ins by invoking the Java native operations that are exported by the plug-in.

- If you want to learn about how to write JavaScript to control a LiveConnected plug-in, look at the LiveConnect Communication in JavaScript document.

- If you want to know how to integrate a plug-in with Java, look at the LiveConnecting Plug-ins with Java document.

- If you want to understand the basics of plug-in development -- what calls you have to export to become a Navigator plug-in, look at the The Plug-in Developer's Guide document.

  When you get tired of the Simple plug-in, try CharFlipper example. It demonstrates a more sophisticated LiveConnected plug-in that rotates through a set characters specified by a source file. It also uses the example C++ plug-in framework. CharFlipper works for Mac and Windows.

  You can also check out the plug-in "templates" -- these are empty projects that work for Windows (Visual C++ 4.0), Macintosh (Metrowerks CW9), and Unix (various makefiles). Start with one of these to create a new plug-in.