<!-- <questionid="arch-overall"when="init"> Describetheoverallarchitecture. <hint> WhatwillbeAPIfor <ahref="http://openide.netbeans.org/tutorial/api-design.html#design.apiandspi"> clientsandwhatsupportAPI</a>? Whatpartswillbepluggable? Howwillplug-insberegistered?Pleaseuse<code><apitype="export"/></code> todescribeyourgeneralAPIsandspecifytheir <ahref="http://openide.netbeans.org/tutorial/api-design.html#category-private"> stabilitycategories</a>. Ifpossiblepleaseprovidesimplediagrams. </hint> </question>
-->
<answer id="arch-overall">
<p>
This library primarily provides a JComponent class, Term, which can
route user keyboard input to a client and display output from a
client, possibly interpreting and processing the output as ANSI
escape sequences.
</p>
</answer>
<!-- <questionid="arch-quality"when="init"> Howwillthe<ahref="http://www.netbeans.org/community/guidelines/q-evangelism.html">quality</a> ofyourcodebetestedand howarefutureregressionsgoingtobeprevented? <hint> Whatkindoftestingdo youwanttouse?Howmuchfunctionality,inwhichareas, shouldbecoveredbythetests?Howyoufindoutthatyour projectwassuccessful? </hint> </question>
-->
<answer id="arch-quality">
<p/>
Term can potentially be tested in two ways:
<ul>
<li>
Against an external interactive application like vi, emacs, more,
various shells, man, dbx, gdb (or any application which uses
readline), mc (midnight commander), rogue/hack and so on.
<p>
The primary impediment to testing of Term is that for realistic
interaction it requires JNI-based pty support.
</p>
<p>
Proprietary code exists for such a pty library as well as a standalone "TermApp" which are used to hand-test against some of the above
applications.
</p>
</li>
<li>
Using unit tests which can reset the "state" of the terminal,
issue an output, or a call sequence and verify that the resulting
state is the correct one.
<p>
No such unit tests are available at the moment.
</p>
</li>
</ul>
Since NB is considering incorporating JNA (Java Native Access) a non-JNI
based library for accessing pty's becomes feasible in which case TermApp
can make it into this module.
<ul>
<li>
Term was used as the basic building block of the output window
used by NB 3.X.
</li>
<li>
Term is used, in conjunction with a JNI library implementing
unix pty access, by the SunStudio IDE to provide interactive
access to dbx as well as the program being debugged by dbx.
<br/>
Similarly Term was used in SunStudio11 to provide interactive
access to a native program being run.
</li>
<li>
Term can be used, in conjunction with JNI support, as an
in-NB shell or remote access window.
<br/>
The source code contains a sample, under demosrc/telnet,
of a simple telnet client.
</li>
</ul>
</answer>
<!-- <questionid="arch-what"when="init"> Whatisthisprojectgoodfor? <hint> Pleaseprovidehereafewlinesdescribingtheproject, whatproblemitshouldsolve,providelinkstodocumentation, specifications,etc. </hint> </question>
-->
<answer id="arch-what">
<p>
The Terminal Emulator is a library used to display process output. It is
designed to operate in a variety of modes, up to and including full
emulation of an ANSI character terminal, similar to <code>xterm</code>
and so on. NetBeans 3.X used it to implement the Output Window,
where it mostly acted as a "dumb terminal" for use in capturing output
from compilers and programs run by the user. It features hyperlinks which
may be used for e.g. compiler error messages. In more advanced modes it
can even be used to run e.g. VI or Emacs, display margin glyphs, and so
on.
</p>
<!-- <questionid="compat-i18n"when="impl"> Isyourmodulecorrectlyinternationalized? <hint> Correctinternationalizationmeansthatitobeysinstructions at<ahref="http://www.netbeans.org/download/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/i18n-branding.html"> NetBeansI18Npages</a>. </hint> </question>
-->
<answer id="compat-i18n">
<p>
The terminal emulator does not display any particular strings or icons
except what is sent to it. Double-width display of oriental characters
(e.g. Japanese) is supported.
</p>
</answer>
<!-- <questionid="compat-standards"when="init"> Doesthemoduleimplementordefineanystandards?Isthe implementationexactordoesitdeviatesomehow? </question>
-->
<answer id="compat-standards">
<p>
The emulator has full compliance with the generic "dumb" terminal type.
It has good but not 100% compliance with the general ANSI term specification
given by ISO/IEC 6429:1992(E) / ANSI X3.64-1979.
It has some functionality on top of ANSI which is modeled on
the Solaris <code>dtterm</code>, but is not a full emulation of that
termcap.
Subprocesses expecting <code>xterm</code> or <code>vt220</code>
emulation should generally work as well.
</p>
<p>
The library package provides some API documentation for use by
embedding applications. A subset of this API is used by the NetBeans
<code>core-output.jar</code> module to implement the Output Window.
</p>
</answer>
<!-- <questionid="dep-nb"when="init"> WhatotherNetBeansprojectsandmodulesdoesthisonedependon? <hint> DependingonotherNetBeansprojectsinfluncestheabilityof usersofyourworktocustomizetheirownbrandedversionof NetBeansbyenablinganddisablingsomemodules.Too muchdependenciesrestrictthiskindofcustomization.Ifthat isyourcase,thenyoumaywanttosplityourfunctionalityinto piecesofautoload,eagerandregularmoduleswhichcanbe enabledindependently.Usuallytheanswertothisquestion isgeneratedfromyour<code>project.xml</code>file,but ifitisnotguessedcorrectly,youcansuppressitby specifying<defaultanswergenerate="none"/>and writehereyourown.PleasedescribesuchprojectsasimportedAPIsusing the<code><apiname="identification"type="importorexport"category="stable"url="whereisthedescription"/></code>. Bydoingthisinformationgetslistedinthesummarypageofyour javadoc. </hint> </question>
-->
<answer id="dep-nb">
<p>
None, it is a standalone library that could be used in other
applications.
</p>
</answer>
<!-- <questionid="dep-platform"when="init"> Onwhichplatformsdoesyourmodulerun?Doesitruninthesame wayoneach? <hint> IfyouplananydependencyonOSoranyusageofnativecode, pleasedescribewhyyouaredoingsoanddescribehowyouenvision toenforcetheportabilityofyourcode. Pleasenotethatthereisasupportfor<ahref="http://www.netbeans.org/download/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/api.html#how-os-specific">OSconditionally enabledmodules</a>whichtogetherwithautoload/eagermodules canallowyoutoenabletoprovidethebestOSawaresupport oncertainOSeswhileprovidingcompatibilitybridgeonthenot supportedones. Alsopleaselistthesupported OSes/HWplatformsandmentionedthelovestversionofJDKrequired foryourprojecttorunon.AlsostatewhetherJREisenoughor youreallyneedJDK. </hint> </question>
-->
<answer id="dep-platform">
<p>
Should be platform-independent, as it is just a Swing component. Expects
that CRNL translations have been taken care of; pluggable line discipline
handlers support this. If used as a full screen-oriented terminal
emulator, it would need to be attached to code that would handle PTYs,
signals, etc. This would probably need to be JNI, but no such code is
included as part of the library itself.
</p>
</answer>
<!-- <questionid="deploy-packages"when="init"> Arepackagesofyourmodulemadeinaccessiblebynotdeclaringthem public? <hint> BydefaultNetBeansbuildharnesstreatsallpackagesareprivate. Ifyouexportsomeofthem-eitheraspublicorfriendpackages, youshouldhaveareason.Ifthereasonisdescribedelsewhere inthisdocument,youcanignorethisquestion. </hint> </question>
-->
<answer id="deploy-packages">
<p>
No, there is only one package and it contains public API classes.
</p>
</answer>
<!-- <questionid="exec-process"when="impl"> Doyouexecuteanexternalprocessfromyourmodule?Howdoyouensure thattheresultisthesameondifferentplatforms?Doyouparseoutput? Doyoudependonresultcode? <hint> Ifyoufeedaninput,parsetheoutputpleasedeclarethatasanAPI. </hint> </question>
-->
<answer id="exec-process">
<p>
No.
However, Term is designed to handle ANSI escape sequences put out
by various processes.
</p>
</answer>
<!-- <questionid="exec-reflection"when="impl"> DoesyourcodeuseJavaReflectiontoexecuteothercode? <hint> ThisusuallyindicatesamissingorinsufficientAPIintheother partofthesystem.Iftheothersideisnotawareofyourdependency thiscontractcanbeeasilybroken. </hint> </question>
-->
<answer id="exec-reflection">
<p>
No.
It does use reflection to execute it's own code
</p>
</answer>
<!-- <questionid="exec-threading"when="init"> Whatthreadingmodels,ifany,doesyourmoduleadhereto?Howthe projectbehaveswithrespecttothreading? <hint> IsyourAPIthreadsafe?Canitbeaccessedfromanythreadsor justfromsomededicatedones?AnyspecialrelationtoAWTand itsEventDispatchthread?Also ifyourmodulecallsforeignAPIswhichhaveaspecificthreadingmodel, indicatehowyoucomplywiththerequirementsformultithreadedaccess (synchronization,mutexes,etc.)applicabletothoseAPIs. IfyourmoduledefinesanyAPIs,orhascomplexinternalstructures thatmightbeusedfrommultiplethreads,declarehowyouprotect dataagainstconcurrentaccess,raceconditions,deadlocks,etc., andwhethersuchrulesareenforcedbyruntimewarnings,errors,assertions,etc. Examples:aclassmightbenon-thread-safe(likeJavaCollections);might befullythread-safe(internallocking);mightrequireaccessthroughamutex (andmayormaynotautomaticallyacquirethatmutexonbehalfofaclientmethod); mightbeabletorunonlyintheeventqueue;etc. Alsodescribewhenanyeventsarefired:synchronously,asynchronously,etc. Ideas:<ahref="http://core.netbeans.org/proposals/threading/index.html#recommendations">ThreadingRecommendations</a>(inprogress) </hint> </question>
-->
<answer id="exec-threading">
<p>
Term requires that all calls against it be performed on the AWT EventQ thread.
</p>
<p>
All callbacks from Term are performed on the AWT EventQ thread.
</p>
</answer>
<!-- <questionid="perf-limit"when="init"> Arethereanyhard-codedorpracticallimitsinthenumberorsizeof elementsyourcodecanhandle? <hint> Mostofalgorithmshaveincreasingmemoryandspeedcomplexity withrespecttosizeofdatatheyoperateon.Whatisthecritical partofyourprojectthatcanbeseenasabottleneckwith respecttospeedorrequiredmemory?Whatarethepractical sizesofdatayoutestedyourprojectwith?Whatisyourestimate ofpotentialsizeofdatathatwouldcausevisibleperformance problems?Istheresomekindofchecktodetectsuchsituation andprevent"hard"crashes-forexampletheCloneableEditorSupport checksforsizeofafiletobeopenedineditor andifitislargerthan1Mbitshowsadialoggivingthe usertherighttodecide-e.g.tocancelorcommitsuicide. </hint> </question>
-->
<answer id="perf-limit">
<p>
No. There is a history buffer with a fixed number of lines, so output
exceeding this buffer size will continue to be displayed while earlier
lines are discarded, keeping a fixed update speed for new output, subject
to garbage collection etc. There will be a modest hiccup in display if
more than 2<sup>32</sup> lines of text are displayed, estimated to occur
after several days running at full throttle.
</p>
</answer>
<!-- <questionid="perf-mem"when="final"> Howmuchmemorydoesyourcomponentconsume?Estimate witharelationtothenumberofwindows,etc. </question>
-->
<answer id="perf-mem">
<p>
The visible screen and the scrollback buffer are kept in memory; each
line is stored as a character array, so given an average of twenty
characters per line, with a default history size of 10000, and including
some overhead for character attribute storage etc., we can estimate a
standing memory consumption after heavy usage of around one megabyte.
</p>
</answer>
<!-- <questionid="perf-scale"when="init"> Whichexternalcriteriainfluencetheperformanceofyour program(sizeoffileineditor,numberoffilesinmenu, insourcedirectory,etc.)andhowwellyourcodescales? <hint> Pleaseincludesomeestimates,thereareothermoredetailed questionstoanswerinlaterphasesofimplementation. </hint> </question>
-->
<answer id="perf-scale">
<p>
Only the size of the history buffer is relevant (to memory consumption).
</p>
</answer>
<!-- <questionid="perf-spi"when="init"> Howtheperformanceofthepluggedincodewillbeenforced? <hint> Ifyouallowforeigncodetobepluggedintoyourownmodule,how doyouenforcethatitwillbehavecorrectlyandquicklyandwillnot negativelyinfluencetheperformanceofyourownmodule? </hint> </question>
-->
<answer id="perf-spi">
<p>
XXX no answer for perf-spi
</p>
</answer>
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.