While choosing for the language to be used to develop the Web Browser I studied the functionality and methods provided by C# and Java. In the end as I am more familiar with Java and it has a cross platform library which provides inbuilt classes to write code for Web browsing, parsing and rendering of HTML, writing our own content and protocol handlers. All these capabilities of Java have been described in Section 4.
Once I was convinced that Java could be used to build a reliable Web Browser, next step for me was to develop ideas about new features that can be added to a simple Web Browser and the design of Web Browser. I have managed to think of two to three such new ideas and rest of the advanced features that I am planning to provide already exist in few of the present browsers. The 5th Section of the document gives a brief overview of planning and design of the project and the advanced features I am planning to add on in my Java Web Browser.
1. OVERVIEW
Internet:
Internet has become an essential part in our daily life today. Internet may be defined as a collection of interconnected networks that connects most of the universities, organization, government offices etc together. In past two decades Internet has evolved from a military and research based inter network in US to a world wide Web i.e. connecting networks all over the World.
Web Browser:
Web Browser is an application that interpret HTML (programming language of World Wide Web) to show text and graphical images as we see them.
Internet Explorer provided by Microsoft corp. has been the leading Web Browser since early 90’s but with time new Web browsers have been developed with new features.
2.1 Popular Web browsers
[1] All sub-sections have same reference.
2.1.1 Internet Explorer.
Internet Explorer is used by about 65% of people. It is the default Web Browser shipped by Microsoft with its Windows operating system thus remains the leader in Web browsers. Internet Explorer 7.0 beta is the latest release that has many new features added on to keep it in competition with the new fast-growing Web browsers like Opera and Firefox.
2.1.2 Firefox.
If we are talking about popularity, then its worth mentioning the growth of Firefox in last one and half years or so. Officially launched on 9th Nov 2004 it has taken over its parent Mozilla and provides Web browsing to over 26.5% Web users every day. Better user interface and new features are the main cause of this rise in huge popularity.
2.1.3 Safari.
Safari Browser was officially launched on June 23, 2003 and is default Web Browser shipped with the MAC operating system bundle.
2.1.4 Opera.
Opera Software company has worked a lot since the first release of its software in 1996. Opera Browser is the mostly used for
Note: It is worth noting that, these figures may not be exact, as many people use user agent feature of browsers like Opera to appear as Internet Explorer for remote servers for the proper rendering of HTML pages.
2.2 COMMON WEB BROWSER FEATURES.
2.2.1 Toolbar:
Toolbar has number of buttons in it.
1.Back: Back button in the toolbar takes the user to the page visited before the page he is currently viewing.
2.Forward: If the user has used Back button once then the Forward button takes him one step forward to the page which he was viewing after this page earlier.
3.Home: Clicking Home button takes the user to his chosen home page, and if he has not chosen any then it takes him to his Browser’s default home page. For example IE has a default home page set as www.microsoft.com
4.Refresh: Some pages on Internet may get updates quite frequently and to see the updated information in such pages the refresh button comes handy, the refresh button when clicked reloads the current page showing the user the up to date information.
5.Print: Prints the current page.
6.Stop: Stops the downloading of the current page along with stopping of any animations being displayed in the current page.
7.Favourites: You can store your favourite website URL’s in the favourite list and can access them later on from this list, so it gives quick access to your favourite WebPages on the Internet.
2.2.2 Menu Bar: Menu contains a collection of drop down lists at the top of Browser window, clicking a name like file will show the user a drop down list giving more features. Some of the options include view source, save file to disk, etc.
2.2.3 Location Bar: This bar consists of an address field, a Go button and a button to show the list of recently visited websites.
2.2.4 Status Bar: Status bar gives user the information about the connection with the webpage to be displayed, giving information such as number of KB’s downloaded and total size of file, number of items to be downloaded, no of items remaining.
2.2.5 Scroll Bar: Present at the right and bottom of the Browser and lets the user scroll up, down and left, right.
2.2.6 Keyboard shortcuts: Every Browser provides a feature of keyboard shortcuts to access the above buttons.
2.2.7 Caching: Caching increase the speed of a Web Browser to a great deal, as it allows the Web Browser to store pages on the local machine for some time, and if the user asks for the same page and the page cached and the one available on the Web have same updated date then the Browser uses the cached page hence saves bandwidth and time.
2.2.8 Cookies: Cookies are text files stored on your PC by a website to store different kind of information, most common of which is the date and time when the user last visited that page.
These were the common features that every Browser must provide, but with the increase of number of Web browsers and increasing user needs every Browser tries to provide a new feature every time a new version is released. It would not be possible to compare all the existing Web Browser features, though I am going to compare features of the above listed four popular Web browsers.
2.3 COMPARISIONS
[3],[4],[5],[6]:
| I.E 7.0 Beta | Firefox | Safari | Opera |
Creator | Microsoft, spyglass | Mozilla Foundation | Apple Computer | Opera Software |
Open Source | No | Yes | No | No |
Latest Release | 7.0.5335.5 | B.E.A 1 (2.0a1) | 9.0 | 2.0.3 |
Operating System | Windows | All except Mac 9.0 | Mac OS X | except MAC 9.0 |
Bookmarks | Yes | Yes | Yes | Yes |
Download Manager | No | Yes | Yes | Yes |
Forms auto complete | Yes | Yes | Yes | yes |
Spell checking | No | No | Yes | Yes |
Tabbed Browsing | Yes | Yes | Yes | Yes |
Pop up blocking | Yes | Yes | Yes | Yes |
Page zooming | Yes | No | Yes | Yes |
Ad-blocking | No | Partial | Yes | Partial |
Text to speech | No | No | Yes | Yes |
Voice control | No | No | No | Yes |
email protocol | No | No | No | Yes |
Ftp | Yes | Yes | Partial | Yes |
Gopher | Disabled | Depends | Yes | Partial |
Bit Torrent | No | No | No | Yes |
Tiff supported | No | No | Yes | No |
PDF | Yes | No | Yes | Yes |
Svg | No | Partial | No | Partial |
3. WEB CONCEPTS
[12] All sub-sections have this same reference.
3.1 URL: (Uniform Resource Locator) URL may be defined as the address of a webpage or any other Web resource present on the Internet.
3.1.1 Absolute URL: Consists of combination of protocol (http://, ftp:// etc ), network home address and relative address of resource on the network.
Example http://home/ index.html
Protocol: http
Network home address: home
Relative address: /index.html
3.1.2 Relative URL: It could be defined as a URL that changes the position of webpage relative to its current position. So a relative URL /images/index.html will take URL http://home/ index.html to http://home/images/index.html.
3.1.3 Base URL: The URL which is added to the relative URL to make it absolute URL.
3.2 HTML: (Hyper Text Markup Language) HTML could be defined as language of Internet. It uses tags to define how text and images would appear in Web Browser. Also images and text could be assigned hyperlinks that would result in opening of new URL whenever the user clicks on them.
3.3 HTTP: (Hyper Text Transfer Protocol) HTTP is an application protocol that has some set of rules for exchanging Web based data over Internet (images, audio files, video files, text etc).
3.4 XML: XML stands for Extended Markup language. It is used by designers to write their own Markup language by using their own tags. It is not limited as HTML; it is called extensible because it could be extended to any degree by the developer without any limit. Same copy of an xml document could be used to produce a HTML page, word document and a pdf file.
3.5 DOM: (Document Object Model) DOM is an API (application programming interface) developed by W3C for XML and HTML documents. It is used to represent logical structure of xml and HTML documents. The structure mainly used is tree. DOM allows the users to add, delete and modify contents into an XML Document.
4. LANGUAGE
I was advised by Dr. Harman to choose between C# and Java to develop this Web Browser. I have chosen Java to develop the Web Browser.
4.1 Why I have Chosen Java Programming Language: As I have done most of my course works in my MSc degree using Java, I am more familiar and comfortable with Java, though C# Library also provides Classes that can be used to develop an efficient Web Browser.
4.2 Relevant Features of Java:
4.2.1 Cross Platform Network Library:
Some of the networking tasks that I have done using C/C++ on Linux and on Windows platform can be very easily performed using Java library with relatively very less code.
Some of the task that I need to perform to build Web server and which could be easily performed using Java networking library are:
4.2.1.1 Browsing Web pages: URLConnection class in Java.net library is used to communicate with the Web resource through Web Browser. URLConnection is an abstract class so instances of this class have to be build to read from and write to the Web resource given by the URL. The whole operation is performed in number of steps
1. First of all an URL object is created.
2. Use openConnection() method to construct this URL Object.
3. Manipulate the parameters of this connection object.
4. Use connect method to make actual connection to the remote Object
5. Read header information and data from remote Object.
6. Write header information and data to the remote Object.
7. Close the connection.
Ref: [11]
4.2.1.2 Parsing HTML in Java:
Once the data has been read using URLConnection next step is to parse the HTML content using Java. HTMLEditorKit.parser class in Java Swing is used for this purpose.
Ref: [10] [11] for all sub-sections.
4.2.1.2.1 How to use HTMLEditorKit.Parser class
We cannot instantiate .Parser class directly, we have to use getParser() method of HTMLEditorKit class to instantiate it.
But the getParser() method is private so we have to override this method and make it public as shown below
Import javax.swing.text.html.*;
Public class OverRide extends HTMLEditorKit
{
Public HTMLEditorKit.Parser getParser()
{
return super.getParser();
}
}
Now in our main class we will instantiate a .Parser object using the above over-ridden method.
StringReader reader = new StringReader (put the string read using UTL Connection here);
HTMLEditor.Parser parser = OverRide.getParser();
HtmlEditorKit.Parser class has a parser method which is used for actual parsing
Parser.parse(reader,callback,true);
Callback is a variable holding a Callback object; it is called every time there is a new Tag in the HTML Stream.
4.2.1.2.2 How to use HTMLEditorKit.ParserCallback Class
The main usage of this class is to handle various different tags in our HTML document. We can develop our own Parser using .ParserCallback class. For this we have to make a subclass of .ParserCallback class and then override the following methods
· handleComment
· handleEndTag
· handleError
· handleSimpleTag
· handleStartTag
· handleTextmethods.
How these methods work:
· handleComment:
public void handleComment(char[] htmldata, int pos)
Whenever a HTML comment is located in the HTML String, this method is called upon. The actual comment is located in the htmldata and pos variable gives us the current position in the comment.
· handleError:
public void handleError(String mess, int position)
Whenever an error occurs, this method is called upon. The actual error message is present in the mess and position variable gives us the current position.
· handleEndTag:
public void handleEndTag(HTML.Tag tag, int position)
Whenever an ending HTML tag is located, this method is called upon by the parser. Parameter tag contains the actual tag and position variable gives the current position.
· handleText:
public void handleText(char[] text,int position)
Whenever text is located in HTML, this method is called upon by the parser. Parameter text contains the actual text and position variable gives the current position.
· handleSimpleTag:
public void handleSimpleTag(HTML.Tag tag, MutuableAttr ibuteSet set, int position)
Whenever a simple tag is located, this method is called upon by the parser. Parameter tag contains the actual tag, the attribute list is contained in set and position variable gives the current position.
· handleStartTag:
public void handleStartTag(HTML.Tag tag, MutuableAttri buteSet set, int position)
Whenever a start tag is located, this method is called upon by the parser. Parameter tag contains the actual tag, the attribute list is contained in set and position variable gives the current position.
4.2.1.2.3 How to Use HTML.Tag class
1. HTMLEditorKit.ParserCallBack class has many methods that used the objects of HTML.Tag class. This class is used to represent a HTML Tag. For methods present in HTML.Tag class are
· toString:
public String toString()
This method converts the name of tag to string, only the name is converted and the delimiters <>, and attributes are not converted.
· isPerformatted:
public Boolean isPerformatted()
Returns a true value if tag is allowed to preserve white space.
· isBlock:
public Boolean isBlock()
If this tag should cause double line break then a true value is returned.
· breaksFlow:
public Boolean breakFlow()
If this tag should cause a single line break then a true value is returned.
Some of the basic constant HTML.Tag are
1) HTML.Tag.a
2) HTML.Tag.BR
3) HTML.Tag.H1
4.2.1.2.4 How to Use HTML.Attribute Class
The attributes of HTML tags are represented by this class. Some of the tags represented by this class are
· HTML.Attribute.ACTION
· HTML.Attribute.COMMENT
· HTML.Attribute.LINK
For example: To get the LINK attribute out of the MultipleAttributeSet set we can do this
String link = set.getAttribute(HTML.Attribute.LINK)
So by using above four classes we can build our own Java HTML Parser processor. Though I have found out that this processor if used in multithreaded environment may result in a crash so it’s best to use it in one thread at a time. Further research to overcome this problem would to be done by me.
4.2.1.3 Rendering HTML in Java:
Ref: [8] [10] [11] for all sub-sections
As HTML contains both text and images, rendering HTML is another issue to be taken care of. Java has an inbuilt toolkit JEditorpPane which uses a set of methods to display HTML and Rich Text Format. We can build “editor kits “to handle other type of special applications.
We can put the content into JEditorPane using one of the following
1) By using constructer, either pass the URL object or pass String for URL
2) Use setPage method, to provide URL during runtime,
3) Supply the original String using setText method
4) We can also use read method having parameters the InputStream and HTMLDocument object.
How the actual content is displayed:
· setContentType:
public final void setContentType(String type)
This method is used to set the content type for this editor. So for example if we provide the type as text/HTML with Charest as EUC-JP (Japanese) then the EditorKit for text/HTML would be used to load contents and Reader will use EUC-JP Charest to load Unicode into the document.
· setEditorKit:
public void setEditorKit(EditorKit kit)
This is an alternative approach by changing the EditorKit on first place, so we don’t have to specify the content type now, as we will change the EditorKit for the desired content type on first place.
The contents in the JEditorPane could be editable but they look bad if let editable so for better view the JEditorPane should be set non-editable
JEditorPane.setEditable(false)
So a sample code for this would look like this
try {
JEditorPane Browser = new JEditorPane(
Browser.setEditable(false);
Window.add(new JScrollPane(Browser);
} catch(IOException ex) {
System.err.println(“Error”); }
4.2.1.4 Following HyperLinks
Ref: [8]
As explained above, it is a good idea to make the JEditorPane non-Editable, but these results in a problem for handling Hyperlinks. For this we need to add a HyperlinkListner using addHyperlinkListner. We can now use the getEventType() method to listen for any hyperlink clicks and then set the JEditorPane contents for the new URL of the clicked hyperlink.
Sample code would look like this:
Private JEDitorPane Browser;
.
.
.
Public void update(HyperlinkEvent event)
{
If(event.getEventType() ==HyperlinkEvent.EventType.ACTIVATED
{
Try{
Browser.setPage(event.getURL());
}catch(…){}
}
}
4.2.2 How to write Protocol Handlers
Ref: [2]
Classes used
· URL
· URLStreamHandler
· URLConnection
· URLStreamHandlerFactory
How they work together:
1) Construct an URL object using the URL string address of the Internet resource.
2) Constructor will automatically take out the protocol field from the URL address and pass it to the URLStreamHandleFactory.
3) URLStreamHandleFactory then locates the right subclass of URLStreamHandler for the protocol.
4) URLStreamHandleFactory creates a new instance for the stream handler.
5) The new stream handler then parses the URL, and also creates a subclass of URLConnection
6) The subclass of URLConnection knows how to talk with the servers using the protocol in question.
How to write a new protocol handler:
1) First of all we need to check if the protocol has a standard URL, and if not then we have to design one.
2) The MIME type returned by the getContentType() method should be decided upon. Basically we use text/plain.
3) To understamd this protocol we need to write a subclass of URLConnection and implement it’s connect () method. Also we have to override the getContentType(),getInputStream() and the getOutputStream() methods.
4) Now we need to return this new instance of URLConnection, for this we need to build a new subclass of URLStreamHandler. Also we need to override the openConnection of this new subclass.
5) Lastly implement one of the proper class with URLStreamHandlerFactory interface and include createStreamHandler method in that class.
4.2.3 How to write Content Handlers
Ref: [9]
Every Internet resource has some kind of MIME type (Multipurpose Internet Mail Extensions) associated with it. For example an image .jpg file will have a MIME type image/jpeg and a HTML page will have a MIME type text/HTML.
We access the Web resources using the URLConnection class. URLConnection class checks the MIME type of the resource and calls a specialized class to handle this MIME type.
This specialized class in actual is a subclass of an abstract class Java.net.ContebtHandler and it can understand the file format. Such classes are called content handlers.
So we can always extend the ContentHanler class to build content handlers for new type of file formats though Java provided content handlers for some of the known MIME types.
How to build a ContentHandler:
1) Create a subclass of the class ContentHandler.
2) Get the Object that fits with the MIME type by overriding getContent method passing URLConnection object as argument.
Public MimeObject getContent(URLConnection URL)
3) Now implement a right class with ContnetHandleFactory and define the method createContentHandler passing the type of MIME as string and get the right contentHanler from this method
Public class Mimefactory implements ContentHandleFactory {
..
..
ContentHandler createContentHandler(String type){
..
}
4) Now call the URLConnnection.setContent HandlerFactory method to install a ContentHandler Factory as your default.
Public static void setContentHandlerFactoty(Conten tHandlerFactory Con_hand_fact);
5) To test this on local machine put the new handler class in handlers directory, and use http://localhost/ connection to access an image placed in handlers directory.
4.2.4 PLATFORM INDEPENDENT:
Java uses its own JVM to interpret and compile program and it is platform independent giving it an exclusive advantage over other languages.
Hence, Java Browser made by me would need only one version to make it run Windows, Linux and Mac platform and any other further maintenance and changes would need changes to be made a single time only.
5. PLANNING AND DESIGN
As it could be seen from the features of Web Browser explained above that building a complete Web Browser may take a long time, due to a restricted time period a proper planning is must to include maximum number of features to be included into the Web Browser.
Along with proper planning a good design in mind is also important. As the web browser will be built in phases with enhancement in each phase it is important that we do not have to change the code much when adding new features. For this each phase will deal with the its respective features and would also provide a safe state for advanced features that are to be implemented in next phases.
For example handling of protocols other then http:// would not be done till fourth phase so to handle the other protocols like ftp:.// pages of these protocols would not be displayed in earlier phases, instead the browser will show an error page thus leaving the browser in safe state. Now in fourth phase we can always write code for the handling of ftp:// protocol without making changes to the other parts of code.
Below I would explain three lists of features that would be included in my Java Web Browser.
1) Basic Web Browser features
2) Optional but must have add on features
3) Advanced features (Gives better user experience)
5.1 PHASE 1: 7th June – 15th June
In phase 1 I would build a simple Web Browser with minimum required features for a Web Browser
Time Period: One Week.
A simple Frame window having a Location toolbar at the top.
Location Toolbar would consist of:
· An address Text field (Dropdown List)
· A Go button
· A refresh button
Only text/HTML MIME type would be handled in this first phase, as building handlers for other content types may take time.
Classes used for parsing and rendering HTML have been explained earlier. Rendering Web resources will give problems if MIME type is not text/HTML so if the content type is pdf, or wmv, then I would just ignore such contents and redirect the Web Browser to an error page.
Support for Hyperlinks will also be implemented in first phase.
5.2 PHASE 2: 18th June – 18th July
In Second phase I would add on the Tool Bar buttons, Menu Bar and the Status Bar.
Time Period: One Month
Tool Bar will contain: -
1) Back Button
2) Forward Button
3) History Button
4) Favourite Button
5) Home Button
6) Stop Button
7) Print Button
Each of these buttons will have their own action listeners and they will perform their respective functions when clicked.
ArrayLists can be used with ease to store History and Favourite URL’s , and List of URL’s for the Back and Previous buttons could also be stored in an Arraylist and updated with every click of Back and Previous Button.
So a URL would be added to back ArrayList every time we click the Forward button, or click some hyperlink to go to next page or type a new address in the same tab to visit new page. For forward button a URL would be added to Forward ArrayList every time the user clicks Back button, with the removal of that URL from BACK ArrayList.
Status Bar will show following information:
1) A graphical Bar
2) Size of file
3) Type of file
4) Size of file Downloaded
5) No of items in File
All this information could be retrieved from the file header information and has been implemented by me in a coursework – II for CSM – 01 in Christmas vocations.
Lastly the Menu Bar will have two or three Drop down Lists
1) File
2) Tools
3) Options
4) Help
Only few options would be implemented in second phase as more options will be added on later on in the last stage of Project.
User will be provided with an option of using external software to view media contents different from text/HTML and image.
5.3 Phase 3: 21st July – 09 AUGUST
Phase 3 would implement cookies and caching. As these two features are very important for fast Web browsers and cookies are important for most of the sites to work properly. Not much research has been done by me in this area yet so that’s why a period of three weeks has been kept aside.
Time Period: Three Weeks
Along with this I would also work on making the whole project executable in this phase. As I would be using netbeans IDE to develop the Browser so a research is needed to change the source code into executable package.
At the end of this phase I will have a basic Web Browser running, providing all the important features of a Web Browser.
5.4 Phase 4: 11th AUG – 30th September
I have kept last seven weeks for providing some advanced and extra features. Though I have many ideas in my mind and I am determined to implement all of them but due to time restrictions this would not be possible. Some of these advanced features will be a
Could be seen in most of the latest updated Web browsers.
Time Period: Seven Weeks
This phase would deal with implementation of following features: -
5.4.1 Zip Code Alert:
Not implemented by most of the Web browsers. By Zip Code alert I mean submitting your location’s Zip Code to the Web Browser and let the server at the other end which is going to send Web pages to your Web Browser retrieve this information.
What’s the use: You must be thinking what is the use of such feature, well it will save your time as weather engines, search engines and many other websites can retrieve your ZIP CODE from your Web Browser and then display Pages for your local area in first place saving your time. Research still needs to be done by me to implement such kind of idea as it may need some study of basic HTML functions also.
5.4.2 Favicons:
Favicon is a short for ‘Favourites Icon’ and are pronounced as fav-eye-icon. Today mostly all the developed sites have some favicon included in their site. It is a small image that appears in the Web Browser address bar at the start of URL. As most of the Web browsers have this feature of showing favicon in their address bar every effort would be made to include it in my Java Web Browser it would also be displayed in the Favourites menu.
5.4.3 Tabbing:
Tabbing allows multiple Windows in same Web Browser, this saves user time and also saves memory as a single Web Browser could be used to display more then one Web page. I.E 7.0 and other popular Web browsers provide this feature and it is quite popular with users.
5.4.4 ZOOMING:
Zooming in Web Browser is also a very useful and important feature, User will be able to zoom in and zoom out (To certain Limit). A button and keyboard short cut would be provided.
5.4.5 Multiple Fonts:
Multiple fonts could be displayed in the Web Browser by copying these fonts in jre/lib folder.
5.4.6 Text Area:
In my personal experience I have always found it annoying shifting between a Browser and word to write some useful information from the Web page to the word document. This could be worse if the user is trying to write information from multiple Web pages. So Providing a text area on left side ( opens when the user clicks text button) to write things from different Web pages or copy some text and then able to save this text as simple .txt file or a doc file will give a new and useful experience to the user.
5.4.7 Audio Video Support:
Multiple media formats can be played using JAVA MEDIA FRAMEWORK (JMF) API toolkit. Mp3 audio files are the latest to be added into the list of multiple media types.
Though my initial idea was to plug-in window media player into the Browser but due to time restrictions using JMF would be much better. JMF can capture, stream and playback multiple media types.
5.4.8 Hyperlink Tree:
While browsing Web a novice as well as an expert may get lost sometime and may not be able to track back the original page from where he/she started to reach the current page. Providing user with an hierarchal structure showing the links the user has visited to reach the current page will give him a good idea of his browsing history and help him save his time.
5.4.9 Source Codes
I have been using Internet from about last six years and the multimedia broadcast on Internet has increased to a great extent in these last six years. The media content displayed in the form of video files and audio files gets stored in temporary Internet files and can be easily copied by the user. I am astonished to see this happen, and not lot has been done by the bi corporations to stop this. In fact their own websites play media that can be easily accessed without any authentication and can be easily copy pasted.
What are the DE-Merits of this:
· In modern era we want Internet to provide everything to us, and showing movies online legally is a great business and is expected to grow in future. I have personally used some of these sites and have been successful to copy the movies shown by them, in fact one of the website asks for username and password four times before the user can watch the actual movie. Still due to lack of proper technology and less research in this area a common problem remains, that is of storing media file in the temporary Internet files.
· Showing live Sports is another growing online business. I have used some paid websites to buy cricket matches and have seen them live on Internet, but despite there hard effort I have been able to get access of their live stream URL. So its another flaw.
What is the Solution?
1) I think a little improvement in Web Browser could be the solution to this problem. If a Web Browser stores the media in form of some coded data and then when sending it to media player decodes it back to the media format, with the following assumptions:
· Media data is coded with a key sent by the website
· Website sends the media to this new improved Web Browser only.
This solution may look hypothetical, but I will try to research about it and try to implement it, but due to restriction of time I am not sure I would be able to do it nevertheless it could be assigned as future work and can be implemented, If any such thing is possible to implement.
2) Second problem with live streams of radio and Live TV can be dealt with coding the URL that is downloaded with the Web page and can be easily located in the Web page source code. So making changes in the Web Browser, like passing a variable name to the player plug-in and storing the variable value privately could solve this problem.
3) One other solution is omitting the plug-in code from the source text file.
5.4.10 Save Session:
A very cool and useful feature provided by Opera that lets the user see the Web pages every time he opens the Web Browser that were last present in the Web Browser when he closed it. This is called save Session.
5.4.11 Multiple Protocol Handling:
Till now my Web Browser could handle only HTTP pages, as explained previously protocol handlers can be built for different protocols, so every effort would be made to implement as many protocols.
5.4.12 Support Scripting Languages:
Java scripts can be supported by studying and using Mozilla open source rhino project which provides codes for implementation of Java-scripts into Java.
5.4.13 Add plug-ins:
Media type like pdf, wmv should be opened in their viewers only. In first phase I will redirect such media types to an error page, and opening such media in their respective viewers in second phase, in this phase I will try to add plug in into the Browser so that such media can be viewed in the Browser only.
5.4.14 Integrated Agents:
Integrated agents like yahoo messenger, google search bar etc could be added in the toolbar, but not much research has been done by me in this area.
5.4.15 HyperLink Bar:
A Bar window in the left showing all the hyperlinks in the current page.
5.5 Phase 5: 1st Oct – 14th Oct
Phase five is for revision, testing and to enhance the look of Browser along with this time will be utilized to do tasks that have not been completed or need some more updating.
Testing is one of the important role for the success of any project, a proper testing means I would be able to catch the loopholes in my code and can make the Browser better with less errors and always keep it in a safe state, resulting in less crashes of the Browser.
8. REFERENCES
8.1WEB:
(ALL WEB REFERENCES WERE LAST ACCESSED ON 05/05/2006)
1) http://www.w3schools.com/browsers/browsers_stats.asp
2) http://www.scottberkun.com/essays/essay37.htm By Scott Berkun (Former Microsoft Program Manager IE 1.0 -> 5.0, Windows, MSN )
3) http://www.mozilla.com/Firefox/releases/1.5.html
5) http://www.Opera.com/docs/changelogs/Windows/854/
6) http://www.apple.com/macosx/overview/
8) http://www.apl.jhu.edu/~hall/Java/Swing- Tutorial/Swing-Tutorial- JEditor Pane.html
9) http://javaboutique.Internet.com/tutorials/ handlers/
10) http://Java.sun.com/j2se/1.4.2/docs/api/javax/ swing/text/HTML/
8.2 BOOKS:
11) Java Networking Programming O’Reilly 3rd Edition
12) Java Network Programming, Second Edition By Elliotte Rusty Harold Second Edition August 2000 .
13) Definitive Swing Guide John Zukowski’s definitive guide to Swing for Java 2 / John Zukowski.